我正在构建一个需要为每个客户提供单独的SQL Server数据库的应用程序。
要实现这一点,我需要能够创建一个新的客户文件夹,将原型数据库的副本放在该文件夹中,更改数据库的名称,并将其作为新的“数据库实例”附加到SQL Server 。原型数据库包含所有必需的表,字段和索引定义,但没有数据记录。我将使用SMO来管理数据库的附加,分离和重命名。
在创建原型数据库的过程中,我尝试使用Sql Server Management Studio将数据库副本(伴随.MDF,.LDF对)附加到SQL Server,并发现SSMS期望数据库驻留在< / p>
c:\program files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDatabaseName.MDF
这是SQL Server的“功能”吗?有没有办法在单独的目录中管理个别数据库?或者我是否必须将所有客户数据库放在同一目录中? (我希望能有一个比这更好的控制)。
注意:我目前正在使用SQL Server Express,但仅用于测试目的。生产数据库将是SQL Server 2008,Enterprise版本。所以“用户实例”不是一种选择。
答案 0 :(得分:0)
MDF中包含所有数据库文件的物理路径的表,因为它们位于与其分离的实例上。您可以在附加操作期间覆盖位置:
CREATE DATABASE <dbname>
ON (name=dbfilelogicalname, filename='c:\myNewPath\dbfilename.mdf'),
(name=dbfile2logicalname, filename='c:\myNewPath\dbfilename2.ndf'),
(name=dbloglogicalname, filename='c:\myNewPath\dblogfilename.ldf')
FOR ATTACH;