Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures 是否可以编写脚本来轻松部署clr存储过程?_Stored Procedures_Powershell_Clr - Fatal编程技术网

Stored procedures 是否可以编写脚本来轻松部署clr存储过程?

Stored procedures 是否可以编写脚本来轻松部署clr存储过程?,stored-procedures,powershell,clr,Stored Procedures,Powershell,Clr,我希望在我们的部署脚本(目前的powershell)中包含CLR存储过程部署,但是我无法找到一种自动完成这项工作的好方法 我原以为会有一个很好的命令行选项,可以像在VisualStudio中右键单击deploy一样执行此操作。好吧,PowerShell本身不会为您提供太多额外的帮助。您没有提到SQL的哪个版本,所以我将有点泛化 实际上,您所需要做的就是让脚本文件复制CLR存储过程所需的DLL—PowerShell可以像疯子一样复制文件,所以没有问题。然后需要在SQL中执行CREATEASSEMB

我希望在我们的部署脚本(目前的powershell)中包含CLR存储过程部署,但是我无法找到一种自动完成这项工作的好方法


我原以为会有一个很好的命令行选项,可以像在VisualStudio中右键单击deploy一样执行此操作。好吧,PowerShell本身不会为您提供太多额外的帮助。您没有提到SQL的哪个版本,所以我将有点泛化

实际上,您所需要做的就是让脚本文件复制CLR存储过程所需的DLL—PowerShell可以像疯子一样复制文件,所以没有问题。然后需要在SQL中执行CREATEASSEMBLY语句。PowerShell本机对此无能为力。如果您使用的是SQL 2008,脚本可以在SQL cmdlet提供程序中添加PSSNaplet,这将为您提供一个能够执行SQL查询的cmdlet,从而获得CREATE语句

如果您没有2008,您将不得不编写一个简短的.NET例程来创建SqlConnection和SqlCommand—这并不困难,而且完全可能是在PowerShell中

接下来,使用相同的技术执行CREATEPROC语句,使用前面提到的程序集实际创建存储的PROC


你能帮忙吗?可惜没有比这更自动化的了,真的。MS并没有花费太多的脑力来简化这种复杂的SQL部署工作,我不认为,而且CLR工作还增加了一点额外的趣味,因为您必须使程序集可用。

SQL Server发布向导可以将CLR存储的过程编写为文本。看起来它将CLR存储过程的二进制源转换为某种十六进制编码的文本。

可以使用中介绍的技术从SSM生成部署脚本。至少这解决了生成大量CREATE PROCEDURE语句的繁琐部分。

谢谢Don,我希望避免运行CREATE PROC,因为我们有很多CLR存储过程,不想在部署脚本中维护单独的列表。不幸的是,我不确定询问程序集并自动拉出程序有多简单。正如我所说,微软在这一领域还没有花很多脑力。编写整个数据库及其对象的脚本很容易,直到涉及到CLR内容。