2013-07-03 77 views
1

我有一个SQL问题,并尝试了多种组合无济于事。我已经尝试过逗号和分号,在前两个之后),所有三个),所有这些都只是最后一个)。没有这样的运气。请帮我修复查询。提前致谢!sql修改文件语句

我已经做了尽职调查,并在多个网站来(我只能职位,因为reputatoin的两个链接),这些: Create database using script at the default path? http://www.sqlteam.com/forums/topic.asp?topic_id=148732

USE master 
GO 
ALTER DATABASE location_cust_db 
MODIFY FILE 
(
    NAME = location_cust_db_data1, 
    MAXSIZE = UNLIMITED, 
) 
(
    NAME = location_cust_db_data2, 
    MAXSIZE = UNLIMITED, 
) 
(
    NAME = location_cust_db_data3, 
    MAXSIZE = UNLIMITED, 
) 
GO 

USE master 
GO 
ALTER DATABASE location_cust_db 
MODIFY FILE (NAME = location_cust_db_data1, MAXSIZE = UNLIMITED) 
MODIFY FILE (NAME = location_cust_db_data2, MAXSIZE = UNLIMITED) 
MODIFY FILE (NAME = location_cust_db_data3, MAXSIZE = UNLIMITED) 
GO 

这工作,但做20个文件非常繁琐。

USE master 
GO 
ALTER DATABASE location_cust_db 
MODIFY FILE 
(NAME = location_cust_db_data1, 
MAXSIZE = UNLIMITED) 


USE master 
GO 
ALTER DATABASE location_cust_db 
MODIFY FILE 
(NAME = location_cust_db_data2, 
MAXSIZE = UNLIMITED) 
GO 

USE master 
GO 
ALTER DATABASE location_cust_db 
MODIFY FILE 
(NAME = location_cust_db_data3, 
MAXSIZE = UNLIMITED) 
GO 

回答

1

你的第三个选项是最接近的 - 每次修改必须是在一个单独的ALTER DATABASE命令,但你可以离开了USE语句,因为你总是从MASTER运行:

USE master 
GO 

ALTER DATABASE location_cust_db 
MODIFY FILE (NAME = location_cust_db_data1, MAXSIZE = UNLIMITED) 
GO 

ALTER DATABASE location_cust_db 
MODIFY FILE (NAME = location_cust_db_data2, MAXSIZE = UNLIMITED) 
GO 

ALTER DATABASE location_cust_db 
MODIFY FILE (NAME = location_cust_db_data3, MAXSIZE = UNLIMITED) 
GO 

..etc 
0

如果我有问题吧,所以这一块会帮助你

begin 
use master; 
declare @com nvarchar(1024); 
set @com='ALTER DATABASE location_cust_db MODIFY FILE (NAME = location_cust_db_data'; 
declare @i int; 
set @i=1; 
while(@i<20) begin 
     set @[email protected]+str(@i)+' ,MAXSIZE = UNLIMITED);' 
     exec (@com); 
     set @[email protected]+1; 
    end 
end 
+1

bewa exec()命令的执行将会很危险并且非常有用 – 2013-07-03 19:49:04

0
use [location_cust_db] 
GO 

declare csDBFiles cursor local fast_forward for 
select 
    'ALTER DATABASE [' + DB_NAME() + '] MODIFY FILE (NAME = [' + name + '], MAXSIZE = UNLIMITED)' 
from 
    sys.database_files 

open csDBFiles 

declare @stmt varchar(2000) 

fetch next from csDBFiles into @stmt 
while @@fetch_status = 0 
begin 
    print @stmt 
    print 'GO' 
    exec(@stmt) 

    fetch next from csDBFiles into @stmt 
end 

close csDBFiles 
deallocate csDBFiles 
GO 
+0

可能'其中type_desc ='ROWS'在游标声明处或其他任何条件(如有必要)。 –