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;
2、using System.IO;public partial class StoredProceduresMicrosoft.SqlServer.Server.SqlProcedurepublic 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.SqlProcedurepublic 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、 部署存储过程。完整脚本Script.sql2 示例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 Tes
6、t (ID,DataString)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