Never give up - LEO

人 只有在合适的地方 才能体现出最大的价值
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

扩展存储过程

Posted on 2007-04-17 16:54  lizhiwen  阅读(728)  评论(0编辑  收藏  举报
 扩展存储过程是一个 extern C 或 C++ 函数,该函数从 Win32 DLL 导出,并可以从 SQL Server 内部进行调用。扩展存储过程的调用方式类似于存储过程,但像任何已编译的进程一样在服务器上运行。与需要使用 SQL 语句的 SQL Server 存储过程不同,扩展存储过程使您可以使用 Win32 API。 
  编写好扩展存储过程后,固定服务器角色 sysadmin 的成员即可在 SQL Server 中注册该扩展存储过程,然后授予其他用户执行该过程的权限。扩展存储过程只能添加到 master 数据库中。
 
下面这段代码是我自己做的一个外部存储过程,功能是传入一个文件名称,然后修改指定文件名称的文件内容。
 
using System;
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";
   }
  }
 }
}