《C#扩展存储过程.docx》由会员分享,可在线阅读,更多相关《C#扩展存储过程.docx(4页珍藏版)》请在金锄头文库上搜索。
1、1 C#创建SQL Server扩展存储过程1.1 创建1、创建SQL Server项目打开Visual Studio,并从文件菜单中选择“新建项目”。 在“新建项目”对话框中选择“Visual C#”下的“Database”。 然后选择“SQL Server项目”模板。(uxpsp)2、右键单击项目,添加新项3、在打卡的代码文件中创建存储过程。using System;using System.Data;using System.Data.SqlClient;using System.Data.SqlTypes;using Microsoft.SqlServer.Server;using S
2、ystem.IO;public partial class StoredProcedures Microsoft.SqlServer.Server.SqlProcedure public static void uxp_SaveFile(SqlString FilePath, SqlString Content) / 在此处放置代码 string filePath = FilePath.ToString(); if (File.Exists(filePath) File.Delete(filePath); StreamWriter sw = new StreamWriter(filePath,
3、false,System.Text.Encoding.Default); sw.Write(Content.ToString(); sw.Close(); Microsoft.SqlServer.Server.SqlProcedure public static void uxp_DeleteFile(SqlString FilePath) string filePath = FilePath.ToString(); if (File.Exists(filePath) File.Delete(filePath); ;4、编译成dll(uxpsp.dll)1.2 部署部署程序集1、 将DLL复制
4、到数据库服务器本地目录。D:ExSPuxpsp.dll2、 部署应用程序集IF EXISTS (SELECT * FROM sys.assemblies asms WHERE asms.name = Nuxpsp)DROP ASSEMBLY uxpspGOCREATE ASSEMBLY uxpspFROM D:ExSPuxpsp.dllGO部署存储过程1、确保数据库的 TRUSTWORTHY 属性处于打开状态ALTER DATABASE TestDB SET TRUSTWORTHY ON其中,TestDB为测试的数据库2、指定程序集的PERMISSION_SET为EXTERNAL_Access
5、。否则读写文件的存储过程会有权限问题ALTER ASSEMBLY uxpsp WITH PERMISSION_SET=EXTERNAL_AccessGO3、 部署存储过程。完整脚本2 示例1、 创建表TestSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOCREATE TABLE dbo.Test(ID uniqueidentifier NULL,DataString nvarchar(max) NULL,FmtString nvarchar(max) NULL) ON PRIMARYGO2、 插入数据。Insert Into Test (ID,Dat
6、aString)value(NewID(),测试文字)3、 执行存储过程declare content nvarchar(max)declare FileName varchar(256)set FileName=Nd:temp1.dat-删除文件exec TestDB.dbo.uxp_DeleteFile FileName-将某一行的一列写入文件select content=DataString from test where ID=B43DFDA7-84AE-4DF0-88B3-05565E9A0023exec TestDB.dbo.uxp_SaveFile FileName,content