【问题标题】:ADO.NET + T-SQL Invoke scalar function from another DB?ADO.NET + T-SQL 从另一个数据库调用标量函数?
【发布时间】:2020-08-24 09:24:55
【问题描述】:

我有一个 SQL 脚本 select [master].[dbo].sp_SearchDuplicatedAddress('','','',''),我可以从 Management Studio 成功调用它。函数sp_SearchDuplicatedAddress存在于master数据库中,登录用户可以访问,这里没问题。当我尝试从 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 执行跨数据库查询吗?

【问题讨论】:

  • 你指定连接字符串吗?

标签: c# .net sql-server tsql ado.net


【解决方案1】:

我没有复制品。您可以修改以下内容以重现该行为吗?

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);

            }

        }
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-15
    • 1970-01-01
    • 2018-04-29
    • 2017-11-08
    • 2017-07-28
    • 1970-01-01
    相关资源
    最近更新 更多