我想在我们的部署脚本(目前是 powershell)中包含 CLR 存储过程部署,但是我想不出一个自动执行此操作的好方法。
我原以为会有一个不错的命令行选项来执行与 Visual Studio 中的右键单击部署相同的操作
我想在我们的部署脚本(目前是 powershell)中包含 CLR 存储过程部署,但是我想不出一个自动执行此操作的好方法。
我原以为会有一个不错的命令行选项来执行与 Visual Studio 中的右键单击部署相同的操作
好吧,PowerShell 本身不会为您提供太多额外帮助。你没有提到哪个版本的 SQL,所以我会有点笼统。
真的,你需要做的就是让你的脚本文件为你的 CLR 存储过程复制必要的 DLL——PowerShell 可以像疯子一样复制文件,所以没有问题。然后您需要在 SQL 中执行 CREATE ASSEMBLY 语句。PowerShell 本身无法解决此问题。如果您使用的是 SQL 2008,您的脚本可以在 SQL cmdlet 提供程序中添加 PSSnap,这将为您提供一个能够执行 SQL 查询的 cmdlet - 这样您就可以获得 CREATE 语句。
如果您没有 2008,则必须编写一个简短的 .NET 例程来创建 SqlConnection 和 SqlCommand - 不难,而且完全可能在 PowerShell 中。
接下来,使用相同的技术执行您的 CREATE PROC 语句,以使用上述程序集实际创建存储过程。
扎特帮助?可惜没有什么比自动化更自动化了,真的。我不认为 MS 并没有花很多精力来简化这种性质的复杂 SQL 部署的东西,而且 CLR 的东西增加了一些额外的趣味,因为你必须使程序集可用。
可以使用http://msdn.microsoft.com/en-us/library/ms345099.aspx中描述的技术从 SSMS 生成部署脚本。至少这解决了生成大量 CREATE PROCEDURE 语句的繁琐部分。
SQL Server 发布向导可以将 CLR 存储过程脚本编写为文本。看起来它将 CLR 存储过程的二进制源转换为某种十六进制编码文本。