我正在尝试编写一个脚本,如果它在错误的分区上(我被要求),就会移动tempDB-Log。
我已经尝试了所有可能的组合"和'另外将ALTER DATABASE保存到变量中并在之后运行。
此脚本在此之后尚未完成。随后是数据库重启和更多功能以及优化(这是我的第一个tsql脚本)。
DECLARE @NAME nvarchar(100),
SELECT @NAME = name
FROM master.sys.master_files
WHERE (name = 'templog' OR name LIKE '%TempDB_log')
AND physical_name NOT LIKE 'G%';
ALTER DATABASE tempdb
MODIFY FILE (name = '@NAME', filename = ''G:\Program Files\Microsoft SQL Server\MSSQL11.TEST\MSSQL\Data\'@NAME'.ldf'');
GO
它应该如何查找templog.ldf
:
ALTER DATABASE tempdb
MODIFY FILE (name=templog, filename='G:\Program Files\Microsoft SQL Server\MSSQL11.TEST\MSSQL\Data\templog.ldf');
答案 0 :(得分:1)
试试这个:
DECLARE @NAME nvarchar(100);
SELECT @NAME = name
FROM master.sys.master_files
WHERE (name = 'templog' OR name LIKE '%TempDB_log')
AND physical_name NOT LIKE 'G%';
DECLARE @alterSql VARCHAR(MAX) =
'ALTER DATABASE tempdb '
+ 'MODIFY FILE (name = '
+ @NAME
+ ', filename = ''G:\Program Files\Microsoft SQL Server\MSSQL11.TEST\MSSQL\Data\'
+ @NAME
+ '.ldf'');'
EXEC (@alterSql)
它产生这个字符串:
ALTER DATABASE tempdb
MODIFY FILE
(
name = templog,
filename = 'G:\Program Files\Microsoft SQL Server\MSSQL11.TEST\MSSQL\Data\templog.ldf'
);