2013-09-03 10 views
5

ja próbuje utworzyć widok łączący 2 stoliki adminów i wiadomościtworzenie widoku w sqlserver

create view v_news as 
SELECT [n_id] 
    ,[n_title] 
    ,[n_detail] 
    ,[n_date] 
    ,[n_sdate] 
    ,[n_edate] 
    ,[n_admin] 
    ,[a_name] 
    ,[a_email] 
    ,[a_role] 
    ,[a_status] 
FROM hed2.dbo.hed_news,hed2.dbo.hed_admins 
where hed_admins.a_id=hed_news.n_admin 

wyświetlany jest następujący komunikat:

Command(s) completed successfully. 

ale nie ma widoku w folderze widoki.

Kiedy próbuję ponownie uruchomić tę samą kwerendę następnie mówi:

There is already an object named 'v_news' in the database. 

jestem połączony z uwierzytelniania systemu Windows
próbowałem ponownego połączenia i ponownego uruchomienia serwera SQL, ale ....

+0

Musisz utworzyć uprawnienia widoku plus (ewentualnie) ALTERY SCHEMATU w schemacie, w którym widok jest tworzony. –

Odpowiedz

2

trzy rzeczy :

  1. Musisz używać JOINS, a sposób zapisywania zapytania jest zły. Tylko obserwacja. Nic wspólnego z twoim pytaniem.
  2. Czy próbowałeś używać SELECT * FROM v_news? To by zwróciło wyniki.
  3. Kliknij prawym przyciskiem myszy i widoki w SSMS i wybierz odśwież. Będzie on widoczny na liście

Raj

+0

yes SELECT * FROM v_news wyświetla wyniki ale nie wiem, gdzie widok jest przechowywany jak mogę znaleźć i przejść do folderu widoków Odświeżyłem folder widoku, ale go tutaj nie ma –

3

Państwa zdanie jest przy użyciu składni ANSI 92. Chociaż będzie to działać w starszych wersjach baz danych, nie będzie działać w SQL Server 2012. Zobacz Mike Walsh's blog na ten temat.

1 - Podczas korzystania z widoków SSMS nie pojawiają się od razu. Kliknij prawym przyciskiem i odśwież.

2 - Bardzo ważne jest, aby upewnić się, że jesteś we właściwej bazie danych. Jestem pewien, że wielu ludzi, w tym ja, stworzyło obiekt lub dwa we władaniu. Jest to ustawienie domyślne dla nowego logowania.

Można to zmienić, zmieniając domyślną bazę danych logowania.

3 - Wykonaj polecenie USE, aby zmienić kontekst bazy danych (domyślnie).

Poniższy fragment jest zgodny z programem SQL Server 2012.

USE [hed2] 
GO 

create view v_news as 
SELECT [n_id] 
    ,[n_title] 
    ,[n_detail] 
    ,[n_date] 
    ,[n_sdate] 
    ,[n_edate] 
    ,[n_admin] 
    ,[a_name] 
    ,[a_email] 
    ,[a_role] 
    ,[a_status] 
FROM dbo.hed_news JOIN dbo.hed_admins ON hed_news.n_admin = hed_admins.a_id 
GO