目前正在尝试第一次在 SQL Server 中使用存储过程...
现在我们有一个简单的存储过程,它创建了一个数据库副本,我们将用于我们的 CMS 安装。
只要变量都被硬编码到脚本中,我们的存储过程就工作得很好。
我们需要做的就是将 1 个变量应用到存储过程中,但是每次我们尝试运行它时,它都会生成错误,指出标量变量 @dsource 未定义。
我也不太清楚如何在存储过程中将变量作为字符串的一部分应用,因此非常感谢任何帮助
基本上我们需要定义@dsource 参数并在字符串中使用它,这样我们就可以使用这个特定的变量更改所需的目录路径。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:
-- Create date:
-- Description:
-- =============================================
CREATE PROCEDURE one_installer
-- Add the parameters for the stored procedure here
@dsource
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
BACKUP DATABASE base_db
TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\base_db.bak' WITH FORMAT
RESTORE FILELISTONLY FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\base_db.bak'
RESTORE DATABASE @dsource
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\base_db.bak'
WITH
MOVE 'base_db' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\' dsource '.mdf',
MOVE 'base_db_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\DATA\' dsource '_log.ldf'
END
GO