我有一个SQL脚本 select [master].[dbo].sp_SearchDuplicatedAddress('','','','')
我可以从管理工作室成功调用。该函数 sp_SearchDuplicatedAddress
存在于主数据库中,并且可以被登录的用户访问,这里没有问题。问题是当我试图从ADO.Net中执行该SQL脚本时,我得到了以下错误。
System.Data.SqlClient.SqlException: 'Cannot find either column "master" or the user-defined function or aggregate "master.dbo.sp_SearchDuplicatedAddress", or the name is ambiguous.'
这里是示例程序的代码:
var conn = new SqlConnection();
var cmd = conn.CreateCommand();
cmd.CommandText = "select [master].[dbo].sp_SearchDuplicatedAddress('','','','')";
conn.Open();
var outt = cmd.ExecuteScalar();
}
有什么办法可以让我从ADO.Net执行跨数据库查询?
我没有重现。 你能修改下面的内容来重现这个行为吗?
using Microsoft.Data.SqlClient;
using System;
namespace SqlClientTest
{
class Program
{
static void Main(string[] args)
{
var constr = "server=localhost;database=master;integrated security=true";
using (var conn = new SqlConnection(constr))
{
var cmd = conn.CreateCommand();
cmd.CommandText = @"
create or alter function dbo.sp_SearchDuplicatedAddress ( @a varchar(20),@b varchar(20),@c varchar(20),@d varchar(20) )
returns int
as
begin
return 3;
end ";
conn.Open();
cmd.ExecuteNonQuery();
}
constr = "server=localhost;database=tempdb;integrated security=true";
using (var conn = new SqlConnection(constr))
{
var cmd = conn.CreateCommand();
cmd.CommandText = "select [master].[dbo].sp_SearchDuplicatedAddress('','','','')";
conn.Open();
var outt = cmd.ExecuteScalar();
Console.WriteLine(outt);
}
}
}
}