sql-server - 无法从同一服务器还原 SQL 数据库并将其重命名
问题描述
我想从同一台服务器恢复数据库并提供新名称。下面是工作代码。怎么做?
USE [master]
RESTORE DATABASE [Mallesh4000] FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup\MALLESH' WITH FILE = 1,
MOVE N'RSSQ001' TO N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\Mallesh4000.mdf',
MOVE N'RSSQ001_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\Mallesh4000_log.ldf', NOUNLOAD, STATS = 5
GO
下面的代码无法使其动态化。像新的数据库名称,MDFpath,LDFpath
Declare @dbname Varchar(50)
Declare @DBpath VarChar(500)
Declare @mdfpath varchar(500)
Declare @ldfpath varchar(500)
Set @DBNAME = 'Mallesh6000'
Set @DBname = [@DBNAME]
Set @DBpath = N 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\Backup\MALLESH'
Set @mdfPath = N 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\'+@dbname+'.mdf'
Set @ldfpath = N 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\'+@dbname+'_log.ldf'
print @DBname
print @DBpath
print @mdfPath
print @ldfpath
USE [master]
RESTORE DATABASE [@dbname] FROM
DISK = @DBpath WITH FILE = 1
MOVE N'RSSQ001' TO @mdfPath,
MOVE N'RSSQ001_log' TO @ldfpath,
NOUNLOAD, STATS = 5
GO
谢谢。
解决方案
关。作为定界标识符[@dbname]
将恢复名称为“@dbname”的数据库,并且您缺少几个逗号。
这个:
USE [master]
RESTORE DATABASE [@dbname] FROM
DISK = @DBpath WITH FILE = 1
MOVE N'RSSQ001' TO @mdfPath,
MOVE N'RSSQ001_log' TO @ldfpath,
NOUNLOAD, STATS = 5
应该
USE [master]
RESTORE DATABASE @DBname
FROM DISK = @DBpath
WITH FILE = 1,
MOVE N'RSSQ001' TO @mdfPath,
MOVE N'RSSQ001_log' TO @ldfpath,
NOUNLOAD,
STATS = 5
推荐阅读
- javascript - Yargs 帮助不显示所有帮助选项
- xamarin - 如何在本机 Xamarin.Mac 中嵌入 Xamarin.Forms?
- ios - iOS 使用嵌套请求加载表数据
- javascript - React 中显示接收数据的问题
- android - 在使用对讲时通过滑动在标题之间导航
- r - 输出矩阵中每一列的第一个元素的行索引以满足逻辑条件
- python - 将 SQLAlchemy scoped_session 与 Celery 一起使用
- reactjs - 模态不使用 React 路由器和链接关闭
- css - 具有特定属性的后代元素的 css 选择器。
- objective-c - macOS 获取系统中创建连接的通知