2011-11-18 15 views
5

Ho una funzione SQL definita dall'utente che io sono in grado di chiamare da Management Studio utilizzando la sintassi dbo.Function(arg)SQL server - eseguire funzione scalare senza specificare nome db

Ora, quando devo chiamare questa funzione da C# se io don 't specificare **dbname**.dbo.Function(arg) Ricevo un errore che il server SQL non trova questa funzione definita dall'utente. Come posso risolvere questo senza specificare dbname? Ho già collego al server utilizzando una stringa di connessione che specifica il "initial catalog = dbname"


Sembra che non riesco a riprodurre il comportamento menzionato questo punto :-) (sia utilizzando SQL Server 2005 o 2008) devo mettere questo domanda in attesa

+1

Potrebbe mostrare il codice C# e l'esatto errore? –

+2

Potrebbe essere necessario concedere autorizzazioni 'EXEC' sulla funzione al login utilizzato dall'applicazione. –

+0

@MartinSmith Io uso Windows Authetication sia nello studio di gestione (dove funziona) che nel codice C#. Come ho detto se aggiungo codice anche dbname (es. SELEZIONA \t DATEPART (ANNO, Activitylogs.Datastamp) AS YEAR_VALUE, dbname.dbo.ISOweek (Activitylogs.Datastamp) ... funziona – Ghita

risposta

2

la stringa di connessione deve specificare il database da utilizzare inizialmente potrebbe essere simile a questa:.

var cn = new SqlConnection(
    "SERVER=SomeServer;DATABASE=SomeDb;Integrated Security=SSPI;" 
); 

Senza di che, probabilmente stai oggetto di dumping nel database master, che ho s perché è necessario qualificare completamente il nome della funzione.

Problemi correlati