在网上看到有人遇到数据库空间不够用,问是否可以创建数据库到网络共享磁盘? 答案是可以的。但是这种做法是不推荐的,性能可能会受到影响。

 

1. 2005/2008 在网络共享磁盘上创建数据库

 

在2005和2008上默认是不可以在网络共享磁盘上创建数据库的,因为可能会因为网络原因导致数据库的完整性出现问题,同时伴随着IO性能损失导致数据库出现问题。Microsoft KB #304261.但是我们可以通过开启Trace Flag 1807使SQL Server在网络共享磁盘上创建数据库:

 

Step 1. 启动Trace Flag 1807

 

DBCCTRACEON(1807, -1)

 

Step 2. 确保SQL Server Service账户对网络共享磁盘有Full Control权限。

 

Step 3. 创建数据库

 

CREATEDATABASE [networked]ON PRIMARY
( NAME = N'networked', FILENAME = N'\\varund-win7\ATOMNETWORKDB\networked.mdf' , SIZE =3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON 
( NAME = N'networked_log', FILENAME = N'\\varund-win7\ATOMNETWORKDB\networked_log.ldf' ,SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

 

2. 2008 R2及之后版本:

 

从2008R2以后就没有了之前的限制,可以直接创在网络共享磁盘创建数据库(UNC path).

 

Step 1. 确保SQL Server Service账户对网络共享磁盘有Full Control权限。

 

Step 2. 创建数据库

 

CREATEDATABASE[networked_r2] ON PRIMARY
( NAME = N'networked_r2', FILENAME = N'\\varund-win7\ATOMNETWORKDB\networked_r2.mdf' , SIZE= 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON 
( NAME = N'networked_r2_log', FILENAME = N'\\varund-win7\ATOMNETWORKDB\networked_log_r2.ldf' ,SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
GO

 

更多信息参考:

http://blogs.msdn.com/b/varund/archive/2010/09/02/create-a-sql-server-database-on-a-network-shared-drive.aspx