我有一个应用程序,使用sp_helptext检索存储过程的文本.它适用于除 CLR存储过程之外的所有存储过程.如果我尝试sp_helptext在SQLCLR存储过程上使用,我会收到此错误:
对象'PROC_NAME'没有文字
我知道SSMS可以在我使用"script as" - >"create to" - >命令时执行此操作.
但是当我使用SQL Server Profiler跟踪SSMS"生成脚本"操作时,它给了我一个相当复杂的活动的令人生畏的长列表.如果必须的话,我可以通过它,但有没有人知道以编程方式获取CLR存储过程的代码的简单方法?
编辑以澄清
我不希望看到程序集中的实际代码; 我只想要一种简单的方法来查看T-SQL代码,如下例所示:
CREATE PROCEDURE [dbo].[MY_PROC]
@PARAM1 [xml],
@PARAM2 [uniqueidentifier],
@PARAM3 [nvarchar](255),
@PARAM4[bit] = False
WITH EXECUTE AS OWNER
AS
EXTERNAL NAME [SomeSolution.SomeProject].[SomeAssembly].[SomeMethod]
GO
Run Code Online (Sandbox Code Playgroud)
换句话说,SQLCLR函数的"SQL Server端".
我从生产中恢复了我的开发数据库,我的生成数据库中不存在我在开发环境中需要的存储过程.是否可以使用命令将developmetn存储过程导入SQL Server.大约有88个文件,因为每个过程都在不同的文本文件中.
TIA!克里斯
我想将所有从SQL Server 2012到Visual Studio 2012的存储过程编写为.sql文件脚本 (在另一个项目中)。我怎么做?我需要每个存储过程一个.sql文件吗?在SQL Server 2012中右键单击数据库后,可以使用“在任务中生成脚本”选项获取脚本。但是,在每种情况下,.sql文件的名称均为spname.StoredProcedure。我希望该名称为spname.sql。同样,我不希望文件名是database.spname.StoredProcedure,我希望它只是spname.sql
sql sql-server sql-scripts generate-scripts visual-studio-2012
生成数据库脚本时,我正在编写要迁移到不同环境的数据的脚本。脚本生成中是否有一个设置,我可以启用它来自动设置 IDENTITY_INSERT 开/关,这样我就不必在生成的脚本中手动检查每个表并进行设置?我正在使用 SSMS,我想通过 SSMS 来做到这一点。
这是我得到的:
INSERT my_table (my_table_id, my_table_name) VALUES (1, 'val1');
INSERT my_table (my_table_id, my_table_name) VALUES (2, 'val2');
Run Code Online (Sandbox Code Playgroud)
这是我想要的:
SET IDENTITY_INSERT my_table ON
INSERT my_table (my_table_id, my_table_name) VALUES (1, 'val1');
INSERT my_table (my_table_id, my_table_name) VALUES (2, 'val2');
SET IDENTITY_INSERT my_table OFF
Run Code Online (Sandbox Code Playgroud)