TSQL - 缺少对象或列名称或为空

时间:2015-06-23 15:20:16

标签: sql-server tsql

我正在尝试编写一个脚本,如果它在错误的分区上(我被要求),就会移动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');

1 个答案:

答案 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'
);