• 在SQL2005中执行.Net代码


    1.    在VS.Net2005中新建”SQL Server 项目”;
    2.    创建数据库并将数据库显式标记为可信。
         因为无法立即信任附加到 SQL Server 实例的数据库,所以不允许数据库访问超出数据库范围的资源,直到数据库已显式标记为可信。此外,旨在访问数据库以外资源的模块和带有 EXTERNAL_ACCESS 或 UNSAFE 权限设置的程序集还需要其他条件才能成功运行。
    默认情况下,此设置为 
    OFF,但是可以使用 ALTER DATABASE 语句将其设置为 ON
      
    create database km2db 
    go
    USE km2db 
    GO
    ALTER DATABASE km2db SET TRUSTWORTHY ON
    3.    在SQL 2005 中 启用 "clr enabled" 配置选项;
    运行下面的代码
    --启用"clr enabled"配置选项,在.Net Framewrok中执行用户代码.
    exec sp_configure 'show advanced options''1';
    go
    reconfigure;
    go
    exec sp_configure 'clr enabled''1'
    go
    reconfigure;
    exec sp_configure 'show advanced options''1';
    go
    --关闭clr enabled,可以使用
    EXEC sp_configure 'clr enabled'0 
    GO 
    RECONFIGURE 
    GO
    4.    如果你的数据库是从 SQL Server 的早期版本升级到 SQL Server 2005 ,该数据库将保留其现有的兼容级别。此时你要将兼容级别设为 90。SQL Server 2005 的所有安装,默认兼容级别均为 90
     
    EXEC sp_dbcmptlevel 'km2db''90';
    GO
    5.    在此项目中单击添加—>添加新项,添加存储过程、触发器、用户定义的函数等。
       
    [Microsoft.SqlServer.Server.SqlProcedure]
        
    public static int   MrFuPro1()
        {
            
    // 在此处放置代码
            
    return 2;
        }
        
    [Microsoft.SqlServer.Server.SqlProcedure]
        
    public static void selectProcedure() 
        {
            SqlCommand command 
    = new SqlCommand("select * from zk_preasign"); 
            SqlContext.
    Pipe.ExecuteAndSend(command); 
        }

        
    [Microsoft.SqlServer.Server.SqlProcedure]
        
    public static int AddNum(int x,int y,out string execResult)
        {
          
    int   z = x + y;
          
    if (z > 0)
          {
              execResult 
    = "结果大于零";
          }
          
    else
          {
              execResult 
    = "结果小于等零";
          }
          
    return z;
        }
    6.    此时回到sql查询分析器,展开km2db可编程性—>存储过程  将看到所有新生成的存储过程。
    7.    在查询分析器中执行存储过程,以检验新生成的存储过程的有效性.
        
    use km2db
    go
    declare @ret int
    exec @ret= mrfupro1
    print @ret
    go
    exec selectProcedure
    go

    declare @ret2 int,
    @execResult varchar(20)
    exec @ret2=addnum 10,20,@execResult output
    print @ret2
    print @execResult
    go
    8.如果你在你的程序集中调用了其它dll ,可通过下面的方式在sql2005中注册.
       如注册System.Messaging.dll;
    CREATE ASSEMBLY Messaging
    AUTHORIZATION dbo
    FROM 'C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Messaging.dll'
    WITH PERMISSION_SET = UNSAFE
    GO
    8.    如果你是在客户机上部署你的dll,在sql2005中通过以下方式进行。
        
    --如新建的sql server项目
    --
    命名空间为: mrfuDBOP
    --
    类名为:cMrPro
    --
    方法为:public static int AddNum(int x,int y,out string execResult)
    ALTER DATABASE km2db SET TRUSTWORTHY ON
    GO
    CREATE ASSEMBLY mrfuDBOP --你的程序集命名空间名称
    AUTHORIZATION dbo
    FROM 'F:\mrfuDBOP.dll'
    WITH PERMISSION_SET = UNSAFE
    GO
    CREATE PROCEDURE pro_execAddNum
    @ret2 int,
    @execResult varchar(20) output
    AS EXTERNAL NAME mrfuDBOP.[mrfuDBOP.cMrPro].AddNum
    GO

    SQL2005NewTec  Petshop4.0Architecture
  • 相关阅读:
    The Economist posts each week's new content online at approximately 21:00 Thursday evening UK time
    Essential Perl
    Mac破解软件的源泄漏网
    disable google chrome update
    程序员最喜欢的技术书大都出自这 20 家出版社
    Google Search URL Request Parameters
    《NHK日本语发音辞典 CDROM版》[ISO]
    倉頡輸入法 資源匯總
    仓库作业流程考核方式(10个环节)
    【信息化】常见的仓库及物料分类管理问题
  • 原文地址:https://www.cnblogs.com/furenjun/p/sql2005.html
Copyright © 2020-2023  润新知