2011-11-18 13 views
5

我有我可以使用语法dbo.Function(arg)SQL服务器 - 执行标量函数没有specifing数据库名

从Management Studio中调用现在,当我打电话从C#这个功能的用户定义的SQL函数,如果我不't指定**dbname**.dbo.Function(arg)我收到一条SQL Server找不到此用户定义函数的错误。我怎样才能解决这个问题,而不指定dbname?我已经使用指定的连接字符串连接到服务器“initial catalog = dbname"


看来,我不能在这一点:-)重现上述行为(使用SQL Server 2005或2008年),我不得不把这个搁置问题

+1

你能显示C#代码和确切的异常吗? –

+2

您可能需要将该功能的'EXEC'权限授予您的应用程序使用的登录名。 –

+0

@MartinSmith我在管理工作室(工作地点)和C#代码中都使用Windows验证。正如我所说如果我添加代码也dbname(例如SELECT \t DATEPART(YEAR,Activitylogs.Datastamp)AS YEAR_VALUE,dbname.dbo.ISOweek(Activitylogs.Datastamp)...它的工作原理 – Ghita

回答

2

你的连接字符串需要指定最初使用的数据库它可能是这个样子:

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

不这样做,你可能会被倾销到master数据库,这是我这就是为什么你需要完全限定函数名称。