我希望在任何时候sql运行时创建启动存储过程 检索数据库。这是我的代码,我哪里错了?请帮帮我。
USE MASTER
GO
CREATE PROC SP_RetrievalDataBase
AS
BEGIN
EXEC sp_detach_db 'AdventureWorks2012'
CREATE DATABASE MyAdventureWorks
ON
(FILENAME = 'G:\SQL Server 2012\AdventureWorks2012_Database\AdventureWorks2012_Data.mdf'),
(FILENAME = 'G:\SQL Server 2012\AdventureWorks2012_Database\AdventureWorks2012_Log.ldf')
FOR ATTACH;
END
GO
EXEC sp_procoption 'SP_ReplaceDataBase', 'startup', '1'
答案 0 :(得分:2)
尝试将您的上一个参数设置为“开启”,例如
EXECUTE sp_procoption 'SP_ReplaceDataBase', 'startup', 'on';
并在需要自动执行时使用'off',类似这样
EXECUTE sp_procoption 'SP_ReplaceDataBase', 'startup', 'off';
警告
请不要使用sp_
前缀作为过程名称,因为Microsoft强烈建议不要为过程名称使用此前缀。微软的原因如下
在SQL Server中,sp_前缀指定系统存储过程。如果 您使用该前缀作为您的存储过程,您的名称 过程可能与系统存储过程的名称冲突 这将在未来创建。如果发生这样的冲突,你的 如果您的应用程序引用过程,应用程序可能会中断 没有通过模式限定引用。在这种情况下, name将绑定到系统过程而不是您的过程。