Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用当前连接从sql存储过程调用dll函数_Sql_Sql Server_Dll_Clr_Sqlconnection - Fatal编程技术网

使用当前连接从sql存储过程调用dll函数

使用当前连接从sql存储过程调用dll函数,sql,sql-server,dll,clr,sqlconnection,Sql,Sql Server,Dll,Clr,Sqlconnection,我可以使用开放连接从存储过程调用dll吗 我有一个从SQLServer获取数据的dll,当我从存储过程调用它时,我不想打开一个新的连接 多谢各位 这里有一个例子 public class Class1 { public static SqlString GetName(SqlString str) { SqlCommand cmd = new SqlCommand(str.ToString()); cmd.CommandType = System.

我可以使用开放连接从存储过程调用dll吗

我有一个从SQLServer获取数据的dll,当我从存储过程调用它时,我不想打开一个新的连接

多谢各位

这里有一个例子

public class Class1
{
    public static SqlString GetName(SqlString str)
    {
        SqlCommand cmd = new SqlCommand(str.ToString());
        cmd.CommandType = System.Data.CommandType.Text;

        string name = cmd.ExecuteScalar().ToString();
        return name;
    }
}
这是SQL代码

CREATE FUNCTION fn_TestConnection
(
    @str nvarchar(255)
)
RETURNS nvarchar(max)
AS EXTERNAL NAME TestConnection.[TestConnection.Class1].GetName
GO

SELECT dbo.fn_TestConnection('SELECT FName FROM Clients WHERE Id = 1' )

这些说明适用于Microsoft SQL Server Management Studio 2014

导入程序集

首先,您需要导航到“新建程序集”对话框窗口,将该程序集导入SQL Server Management Studio内的数据库:

数据库名称->可编程性->程序集->(右键单击)“新建程序集…”

在“新建程序集”对话框窗口中,选择
程序集路径
字段下的
浏览
,然后选择要导入的程序集。调整权限并单击
ok

在SQL函数中包装汇编方法

接下来,您需要创建sql函数来包装您的汇编方法,如下所示:

CREATE FUNCTION [dbo].[fn_funcName](@str [varchar](max))
RETURNS 
   varchar(max) 
WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [YourSqlAssemblyName].[YourAssemblyName.Class1].[GetName]

若要从函数返回表,请阅读.NET中的SqlFunctionAttribute

这些说明适用于Microsoft SQL Server Management Studio 2014

导入程序集

首先,您需要导航到“新建程序集”对话框窗口,将该程序集导入SQL Server Management Studio内的数据库:

数据库名称->可编程性->程序集->(右键单击)“新建程序集…”

在“新建程序集”对话框窗口中,选择
程序集路径
字段下的
浏览
,然后选择要导入的程序集。调整权限并单击
ok

在SQL函数中包装汇编方法

接下来,您需要创建sql函数来包装您的汇编方法,如下所示:

CREATE FUNCTION [dbo].[fn_funcName](@str [varchar](max))
RETURNS 
   varchar(max) 
WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [YourSqlAssemblyName].[YourAssemblyName.Class1].[GetName]

若要从函数返回表,请阅读.NET中的SqlFunctionAttribute

命名SQL函数以便知道它来自哪个程序集的约定是什么?或者有没有办法在SQL Server Management Studio中检查与给定过程关联的程序集?@MinhTran我记得没有命名约定。你必须记住这一点。但我现在确定,那是很久以前的事了。命名SQL函数的惯例是什么,这样您就知道它来自哪个程序集了?或者有没有办法在SQL Server Management Studio中检查与给定过程关联的程序集?@MinhTran我记得没有命名约定。你必须记住这一点。但我现在肯定,那是很久以前的事了。