编写好扩展存储过程后,固定服务器角色 sysadmin 的成员即可在 SQL Server 中注册该扩展存储过程,然后授予其他用户执行该过程的权限。扩展存储过程只能添加到 master 数据库中。
下面这段代码是我自己做的一个外部存储过程,功能是传入一个文件名称,然后修改指定文件名称的文件内容。
using System;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.IO;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.IO;
[assembly: AssemblyTitle("xChange")]
[assembly: AssemblyDescription("Test SQL .NET interop")]
[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("MyKey.snk")]
namespace SQLInterop
{
[ClassInterface(ClassInterfaceType.AutoDual)]
public class ChangeCache
{
public string xChangetxt(string strname)
{
if(File.Exists("f:\\CacheTest\\" + strname + ".txt"))
{
StreamWriter sw = new StreamWriter("f:\\CacheTest\\" + strname + ".txt",false);
sw.WriteLine(DateTime.Now.ToString() + " " + DateTime.Now.Millisecond.ToString());
sw.Close();
return "OK";
}
else
{
return "FAIL";
}
}
}
}
[assembly: AssemblyDescription("Test SQL .NET interop")]
[assembly: AssemblyVersion("1.0.0.1")]
[assembly: AssemblyDelaySign(false)]
[assembly: AssemblyKeyFile("MyKey.snk")]
namespace SQLInterop
{
[ClassInterface(ClassInterfaceType.AutoDual)]
public class ChangeCache
{
public string xChangetxt(string strname)
{
if(File.Exists("f:\\CacheTest\\" + strname + ".txt"))
{
StreamWriter sw = new StreamWriter("f:\\CacheTest\\" + strname + ".txt",false);
sw.WriteLine(DateTime.Now.ToString() + " " + DateTime.Now.Millisecond.ToString());
sw.Close();
return "OK";
}
else
{
return "FAIL";
}
}
}
}