明辉手游网中心:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

SQL Call dot net Dll

[摘要]软件等级:更新时间:2016-11-11版本号:v5.7.10 MySQL Server x64官方正式版免费下载立即下载 SQL Server 2005 中, 直接叫用.NET組件是個很特別的功能; 它的使用時點在於當 SQL Program 無法快速有效率的處理我們想做的事, 而且...
MySQL Server x64官方正式版免费下载

软件等级:

更新时间:2016-11-11

版本号:v5.7.10

MySQL Server x64官方正式版免费下载

 

SQL Server 2005 中, 直接叫用.NET組件是個很特別的功能; 它的使用時點在於當 SQL Program 無法快速有效率的處理我們想做的事, 而且.NET code可以做的比 SQL Program 好時, 我們可以在 SQL Program 中直接叫用 .NET組件中的類別方法, 這些Method必須是static, 這些Method可以被視為Function, Stored Procedure的方式來使用.
以下是一連串的步驟, 說明建立的過程.
1. 標示指定Method
在想要成為CLR Function/Stored Procedure的Static Method上設定Attribute.
   1: using System;
   2: using System.Collections.Generic;
   3: using System.Text;
   4: 
   5: using Microsoft.SqlServer.Server;
   6: 
   7: namespace HowardCLRInSQLSample
   8: {
   9:     public class HelloCLR
  10:     {
  11:         [SqlFunctionAttribute(Name = "FN_Hello")]
  12:         public static string FN_Hello()
  13:         {
  14:             return "Hello, CLR Function In SQL !!";
  15:         }
  16: 
  17:         [SqlProcedureAttribute(Name = "SP_Hello")]
  18:         public static void SP_Hello()
  19:         {
  20:             SqlContext.Pipe.Send("Hello, CLR Stored Procedure In SQL !!");
  21:         }
  22:     }
  23: }
 
2. SQL Server 環境建立
 
 
   1: -- 啟用SQL Server中的 CLR功能 (預設為關閉)
   2: -- 必須擁有 sysadmin 或 serveradmin 的權限才能啟用此功能
   3: sp_configure 'clr enabled', 1
   4: GO
   5: RECONFIGURE
   6: GO
   7: 
   8: -- 同時必須設定指定db - Compatibility level -> 90 (即database為SQL Server 2005)
   9: sp_dbcmptlevel OFD_POLARIS_CUR_EC, 90
 
 
 
3. 註冊組件, 建立CLR Function/Stored Procedure
 
 
   1: -- 登錄組件 HowardCLRInSQLSample.dll
   2: -- 任何登錄之後的任何變動(re-build) 皆需重登錄
   3: IF EXISTS (SELECT [name] FROM sys.assemblies WHERE [name] = N'HowardCLRInSQLSample')
   4: DROP ASSEMBLY HowardCLRInSQLSample;
   5: GO
   6: 
   7: CREATE ASSEMBLY HowardCLRInSQLSample
   8: FROM 'H:\00 IT\Database\SQL Server\SQL 2005\clr in sql server\HowardCLRInSQLSample\HowardCLRInSQLSample\bin\Debug\HowardCLRInSQLSample.dll'
   9: WITH PERMISSION_SET = SAFE;
  10: GO
  11: 
  12: -- 可以用assembly_files來檢視組件的路徑
  13: select * from sys.assembly_files
  14: 
  15: -- 建立clr function
  16: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FN_Hello]'and xtype in (N'FN', N'IF', N'TF', N'FS'))
  17:     drop function [dbo].[FN_Hello]
  18: GO
  19: 
  20: CREATE FUNCTION [dbo].[FN_Hello] ()
  21: Returns  nvarchar(100)
  22: EXTERNAL NAME HowardCLRInSQLSample.[HowardCLRInSQLSample.HelloCLR].FN_Hello
  23: 
  24: 
  25: -- 建立clr sp
 
 
 
Alter Database SF_Maintain SET TRUSTWORTHY ON
 
  TRUSTWORTHY   {   ON     OFF   }   
  ON   
  
使用模拟上下文的数据库模块(例如,用户定义函数或存储过程)可以访问数据库以外的资源。     
    
  OFF   
  
模拟上下文中的数据库模块不能访问数据库以外的资源。
 
Alter   Database  QMS_Stock  SET   TRUSTWORTHY   ON 
  26: IF EXISTS (SELECT * FROM sys.procedures WHERE [name] = N'SP_Hello')
  27:     DROP PROCEDURE [dbo].[SP_Hello];
  28: GO
  29: 
  30: CREATE PROCEDURE [dbo].[SP_Hello]
  31: AS EXTERNAL NAME HowardCLRInSQLSample.[HowardCLRInSQLSample.HelloCLR].SP_Hello
  32: GO
 
4.大功告成. 就如同使用一般function與stored procedure的方式.
 
 
   1: select [dbo].[FN_Hello]()
   2: 
   3: exec SP_Hello
 
 
 
Configure command
sp_configure 'clr enabled', 1
Go
RECONFIGURE
Go
exec sp_dbcmptlevel SF_Maintain, 90
Alter Database SF_Maintain SET TRUSTWORTHY ON
 
CREATE ASSEMBLY CLRGetJobStatus
   FROM 'd:\QMS_udfudf_GetJobStatus.dll'
   WITH PERMISSION_SET = UNSAFE
 
EXTERNAL NAME [SPSQLDll].[TestSQLDLL.clsFunctionSQL].ufn_VSDll
 
 
 
 
To get the owner SID recorded in the master database, run:
SELECT owner_sid FROM sys.databases WHERE database_id=DB_ID()
To get the owner SID recorded in the current database, run:
USE SF_Maintain
GO
SELECT sid FROM sys.database_principals WHERE name=N'dbo'
 
ALTER AUTHORIZATION ON DATABASE::SF_Maintain TO [sa]

常见的网络操作系统有UNIX、Netware、Windows NT、Linux等,网络软件的漏洞及缺陷被利用,使网络遭到入侵和破坏。