相关疑难解决方法(0)

全自动SQL Server还原

我对SQL Server命令不太熟悉.

我需要一个脚本来从.bak文件恢复数据库,并将logical_data和logical_log文件移动到特定路径.

我可以:

restore filelistonly from disk='D:\backups\my_backup.bak'
Run Code Online (Sandbox Code Playgroud)

这将给我一个带有列的结果集LogicalName,接下来我需要使用restore命令中结果集中的逻辑名称:

restore database my_db_name from disk='d:\backups\my_backups.bak' with file=1,
move 'logical_data_file' to 'd:\data\mydb.mdf',
move 'logical_log_file' to 'd:\data\mylog.ldf'
Run Code Online (Sandbox Code Playgroud)

如何将第一个结果集中的逻辑名称捕获到可以提供给"move"命令的变量中?

我认为解决方案可能很简单,但我对SQL Server很新.

t-sql sql-server database-restore

36
推荐指数
3
解决办法
5万
查看次数

SQL Server"RESTORE FILELISTONLY"结果集

我正在尝试编写自动备份并恢复T-SQL脚本.我已经做了BACKUP部分,但我在RESTORE上苦苦挣扎.

当我在SS Management Studio上运行以下语句时;

EXEC('RESTORE FILELISTONLY FROM DISK = ''C:\backup.bak''')
Run Code Online (Sandbox Code Playgroud)

我在网格中得到了一个结果集,我也可以使用

INSERT INTO <temp_table> 
EXEC('RESTORE FILELISTONLY FROM DISK = ''C:\backup.bak''')
Run Code Online (Sandbox Code Playgroud)

填充临时表.但是,当我尝试从该结果集中进行选择时,我会收到语法错误.例如

SELECT * FROM  
EXEC('RESTORE FILELISTONLY FROM DISK = ''C:\backup.bak''')
Run Code Online (Sandbox Code Playgroud)

结果集元数据应存储在SQL Server Dictionary中的某处.我找到了其他的创可贴公式来让我的自动恢复工作,但是如果能够获得结果集,我会创建更优雅的解决方案.另请注意,结果集在2008年与2005年不同.

提前致谢...

t-sql sql-server database-restore

14
推荐指数
3
解决办法
3万
查看次数

使用MOVE确定DB RESTORE的SQL数据路径

我正在尝试编写一个自动恢复数据库备份的脚本.我知道我可以使用以下RESTORE命令:

RESTORE DATABASE [DBRestoredName] 
FROM  DISK = N'C:\path\to\backup.bak' 
WITH  FILE = 1,  
MOVE N'DBNAME' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\DBNAME.mdf',  
MOVE N'DBNAME_log' TO N'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\DBNAME.ldf',  
NOUNLOAD
Run Code Online (Sandbox Code Playgroud)

这个问题是我希望能够在运行时确定SQL服务器的数据位置(即TO路径),以便将恢复的数据库与此服务器上的其他数据库一致地放置.

正在恢复的服务器上将不存在要恢复的数据库,并且我需要MOVE语句,因为源服务器很可能是SQL Server 2005,目标是2008,因此备份文件中包含的文件路径是不可取的.

那么我可以通过哪种方式以编程方式确定SQL数据位置?

sql t-sql sql-server

8
推荐指数
1
解决办法
4716
查看次数

如何查询SQL Server备份文件

我使用的是SQL Server 2008 R2,我有一个备份文件,B:\backups\full_backup.bak但我不知道这个文件有什么备份或者每个文件有哪些文件.如何编写查询以从此备份文件还原数据库?

我试图恢复数据库,但它引发了一个错误说

消息3156,级别16,状态4,行1
文件'Application_Primary'无法还原到'D:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Application_Primary.mdf'.使用WITH MOVE标识文件的有效位置.

消息3156,级别16,状态4,行1
文件'Application_FTS'无法还原到'D:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Application_FTS.mdf'.使用WITH MOVE标识文件的有效位置.

消息3156,级别16,状态4,行1
文件'Application_Log'无法还原到'L:\ Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\Application_Log.ldf'.使用WITH MOVE标识文件的有效位置.

消息3119,级别16,状态1,行1
在规划RESTORE语句时确定了问题.以前的消息提供详情.

消息3013,级别16,状态1,行1
RESTORE DATABASE异常终止.

码:

restore database Application_db
From disk = 'B:\backups\full_backup.bak'
Run Code Online (Sandbox Code Playgroud)

sql-server

2
推荐指数
1
解决办法
3374
查看次数

标签 统计

sql-server ×4

t-sql ×3

database-restore ×2

sql ×1