2013-09-03 22 views
5

ho cercando di creare una vista che collega 2 tavoli amministratori e notiziecreando vista in 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 

Questo messaggio viene visualizzato:

Command(s) completed successfully. 

ma non c'è vista nella cartella VISTA.

Quando provo ad eseguire nuovamente la stessa query allora dice:

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

sono collegato con l'autenticazione di Windows
ho provato riconnessione e riavviare il server SQL, ma ....

+0

È necessario creare l'autorizzazione di visualizzazione più (possibilmente) l'autorizzazione ALTER SCHEMA sullo schema in cui viene creata la vista. –

risposta

2

Tre cose :

  1. È necessario utilizzare JOINS e il modo in cui la query è scritta è errata. Solo un'osservazione Niente a che vedere con la tua domanda.
  2. Hai provato a eseguire SELECT * FROM v_news? Ciò restituirebbe risultati.
  3. Fare clic con il tasto destro e visualizzare in SSMS e selezionare Aggiorna. Mostrerà nella lista

Raj

+0

SELEZIONA * DA v_news mostra risultati ma non so dove è memorizzata la vista come posso trovare e passare alla cartella visualizzazioni Ho aggiornato la vista della cartella ma non è qui –

3

La vista sta usando la sintassi ANSI 92. Sebbene funzioni per versioni di database precedenti, non funzionerà in SQL Server 2012. Vedere Mike Walsh's blog su questo argomento.

1 - Quando si utilizzano le viste SSMS non vengono visualizzate immediatamente. Fare clic destro e premere Aggiorna.

2 - È molto importante assicurarsi di essere nel database corretto. Sono sicuro che molte persone, incluso me, hanno creato un oggetto o due in master. Questo è l'impostazione predefinita per un nuovo accesso.

Questo può essere modificato cambiando il database predefinito per il login.

3 - Eseguire il comando USE per modificare il contesto del database (impostazione predefinita).

Lo snippet di seguito è una versione conforme a 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