一般情况下,正常安装sql server之后,master等系统数据库的路径都是被设置为绝对路径,这样拷贝到别的路径或机器可能就不行了。
使用相对路径的好处是可以让你的绿色Sql server随时copy到任意目录或是任意其它机器上启动,并且原来的数据库全部可以使用。
首先,设置服务器属性“允许对系统目录直接进行修改”。数据库路径存储在master数据库的sysaltfiles和sysdatabases系统表中,使用相对路径就是修改这两个表中的涉及文件路径的数据。但是默认是不可以直接修改表中数据的。
第一种方法可以通过SQLServer企业管理器设置。
SQL Server属性->服务器设置->服务器行为。
允许对系统目录直接修改打勾。
第二种方法可以通过SQL语句执行来设置。
use master
go
sp_configure 'allow updates',1
go
reconfigure with override
go
然后修改数据库的路径为相对路径。
第一种方法,通过企业管理器打开sysaltfiles和sysdatabases,直接修改filename字段值
譬如针对master数据库。
打开master库sysaltfiles表,原来master库数据文件filename值为” C:/Program Files/Microsoft SQL Server/MSSQL/Data/master.mdf”,改为” ./../data/master.mdf”, 原来日志文件filename值为” C:/Program Files/Microsoft SQL Server/MSSQL/Data/data/mastlog.ldf”,改为” ./../data/mastlog.ldf”。
打开master库sysdatabases表,原来master库的filename值为” C:/Program Files/Microsoft SQL Server/MSSQL/Data/master.mdf”,改为” ./../data/master.mdf”。
其它数据库同理修改为相对路径。
第二种方法,使用SQL语句。
譬如针对master数据库。
use master
Go
update sysaltfiles set [filename]=' ./../data/master.mdf ' where [name]='master’
update sysaltfiles set [filename]='./../data/mastlog.ldf ' where [name]='mastlog’
update sysdatabases set [filename]=' ./../data/master.mdf ' where [name]='master’
go
其它数据库同理写SQL语句修改为相对路径。