加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 如何登录T-SQL

发布时间:2020-12-12 16:44:40 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用ADO.NET访问SQL Server 2005,并希望能够从我正在调用的T-SQL存储过程中进行日志记录.这是可能吗? 在使用ADO.NET时,我无法看到’print’语句的输出,因为我想使用日志记录来进行调试,理想的解决方案是从SysInternals发送DebugView的消息. 解决方法
我正在使用ADO.NET访问SQL Server 2005,并希望能够从我正在调用的T-SQL存储过程中进行日志记录.这是可能吗?

在使用ADO.NET时,我无法看到’print’语句的输出,因为我想使用日志记录来进行调试,理想的解决方案是从SysInternals发送DebugView的消息.

解决方法

我通过编写一个SQLCLR程序来解决这个问题,Eric Z Beard建议.程序集必须使用强名称密钥文件进行签名.
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class StoredProcedures
{
    [Microsoft.SqlServer.Server.SqlProcedure]
    public static int Debug(string s)
    {
        System.Diagnostics.Debug.WriteLine(s);
            return 0;
        }
    }
}

创建密钥和登录名:

USE [master]
CREATE ASYMMETRIC KEY DebugProcKey FROM EXECUTABLE FILE =
'C:..SqlServerProject1binDebugSqlServerProject1.dll'

CREATE LOGIN DebugProcLogin FROM ASYMMETRIC KEY DebugProcKey 

GRANT UNSAFE ASSEMBLY TO DebugProcLogin

将其导入到SQL Server中:

USE [mydb]
CREATE ASSEMBLY SqlServerProject1 FROM
'C:..SqlServerProject1binDebugSqlServerProject1.dll' 
WITH PERMISSION_SET = unsafe

CREATE FUNCTION dbo.Debug( @message as nvarchar(200) )
RETURNS int
AS EXTERNAL NAME SqlServerProject1.[StoredProcedures].Debug

然后我可以使用T-SQL程序登录

exec Debug @message = 'Hello World'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读