Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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
Sql 如何从特定数据库下载所有存储过程_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 如何从特定数据库下载所有存储过程

Sql 如何从特定数据库下载所有存储过程,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我必须从特定数据库下载所有存储过程 大约有130个存储过程,我可以手动执行,就像每个存储过程都执行另存为文件一样 但是是否有任何自动选项可以下载所有内容?您可以在management studio中执行此操作-右键单击所需的数据库,然后选择任务->生成脚本->执行向导。然后,您可以只指定存储过程等 您还可以使用如下脚本: SET NOCOUNT ON DECLARE @Test TABLE (Id INT IDENTITY(1,1), Code VARCHAR(MAX)) INSERT INT

我必须从特定数据库下载所有存储过程

大约有130个存储过程,我可以手动执行,就像每个存储过程都执行另存为文件一样


但是是否有任何自动选项可以下载所有内容?

您可以在management studio中执行此操作-右键单击所需的数据库,然后选择任务->生成脚本->执行向导。然后,您可以只指定存储过程等

您还可以使用如下脚本:

SET NOCOUNT ON
DECLARE @Test TABLE (Id INT IDENTITY(1,1), Code VARCHAR(MAX))

INSERT INTO @Test (Code)
SELECT 'IF object_ID(N''[' + schema_name(schema_id) + '].[' + Name + ']'') IS NOT NULL
          DROP PROCEDURE ['+ schema_name(schema_id) +' ].[' + Name + ']' + CHAR(13) + CHAR(10) + 'GO' + CHAR(13) +CHAR(10) +
           OBJECT_DEFINITION(OBJECT_ID) + CHAR(13) +CHAR(10) + 'GO' + CHAR(13) + CHAR(10)
            FROM sys.procedures
            WHERE is_ms_shipped = 0

DECLARE @lnCurrent INT, @lnMax INT
DECLARE @LongName VARCHAR(MAX)

SELECT @lnMax = MAX(Id) FROM @Test
SET @lnCurrent = 1
WHILE @lnCurrent <= @lnMax
      BEGIN
            SELECT @LongName = Code FROM @Test WHERE Id = @lnCurrent
            WHILE @LongName <> ''
               BEGIN
                   PRINT LEFT(@LongName,8000)
                   SET @LongName = SUBSTRING(@LongName, 8001, LEN(@LongName))
               END
            SET @lnCurrent = @lnCurrent + 1
      END
将NOCOUNT设置为ON
声明@testtable(Id INT-IDENTITY(1,1),代码VARCHAR(MAX))
插入@Test(代码)
选择“如果对象ID(N”['+schema\u name(schema\u ID)+'].['+name+']'')不为空
删除过程['+schema\u name(schema\u id)+'].['+name+']'+CHAR(13)+CHAR(10)+'GO'+CHAR(13)+CHAR(10)+
对象定义(对象ID)+字符(13)+字符(10)+“GO”+字符(13)+字符(10)
来自sys.procedures
_ms_装运地点=0
声明@lnCurrent INT,@lnMax INT
声明@LongName VARCHAR(最大值)
从@Test中选择@lnMax=MAX(Id)
设置@lnCurrent=1
而@lnCurrent1)打开SQL Server Management Studio
2) 在对象资源管理器中选择您的数据库
3) 右键单击>任务>生成脚本

4) 仅选择要编写脚本的存储过程

5) 按照向导完成以下步骤;在下一个屏幕上,选择选项
每个对象一个文件
,并定义放置这些文件的目录:

使用这些选项,每个存储过程将获得一个文件,存储在您选择的目录中。

您也可以使用DB pro(Visual Studio数据库工具)来执行此操作。 有关更多信息,请查看以下内容-


编辑:更新了过时的链接

嘿,我希望每个SP有130个单独的文件:(它只给了我一个file@ashuthinks:无论你喜欢它们在哪里!逐步完成向导-它会问你是要为所有存储的进程创建一个文件,还是每个存储的进程创建一个文件,它会问你在哪里存储这些文件…@ashuthinks:请看我的第三个屏幕截图-这就是你要找的吗???每个对象一个文件?不幸的是e链接现在已失效。正是由于这个原因,不鼓励使用仅链接的答案。如果答案被编辑为包含某些内容,则可以保存。