2011-11-18 10 views
5

Tengo una definida por el usuario función SQL que soy capaz de llamar desde el estudio de gestión utilizando la sintaxis dbo.Function(arg)servidor SQL - ejecutar función escalar sin especificando el nombre db

Ahora, cuando tengo que llamar a esta función desde C# si don 'especifique **dbname**.dbo.Function(arg) Aparece un error que el servidor SQL no encuentra esta función definida por el usuario. ¿Cómo puedo resolver esto sin especificar dbname? Ya conectarse al servidor utilizando una cadena de conexión que especifica el "initial catalog = dbname"


Parece que no puedo reproducir el comportamiento mencionado en este punto :-) (ya sea utilizando SQL Server 2005 o 2008) que tengo que poner esto pregunta en espera

+1

¿Podría mostrar el código C# y la excepción exacta? –

+2

Es posible que deba otorgar permisos 'EXEC' sobre la función al inicio de sesión utilizado por su aplicación. –

+0

@MartinSmith Utilizo Windows Authetication tanto en el estudio de gestión (donde funciona) como en el código C#. Como ya he dicho, si agrego el código también dbname (por ejemplo, SELECCIONAR \t DATEPART (AÑO, Activitylogs.Datastamp) AS YEAR_VALUE, dbname.dbo.ISOweek (Activitylogs.Datastamp) ... funciona – Ghita

Respuesta

2

Su cadena de conexión debe especificar la base de datos a utilizar inicialmente podría ser algo como esto:.

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

Sin eso, es probable que está siendo objeto de dumping en la base de datos master, que i s por qué necesita calificar completamente el nombre de la función.

Cuestiones relacionadas