【发布时间】:2012-07-22 05:20:56
【问题描述】:
我希望能够使用我找到的代码HERE 在我的 C# WinForm 应用程序中创建一个数据库。
但我需要找到一种方法来获取该特定 SQL Server 实例的默认数据目录。我想知道是否有一种简单的方法可以在各种版本的 SQL Server 上使用。
提前致谢。
编辑
我发现以下 Select 将返回远程服务器上的默认数据目录:
SELECT
SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) - 1)
FROM master.sys.master_files
WHERE database_id = 1
AND file_id = 1
此解决方案仅适用于 SQL Server 2005+。
**
【问题讨论】:
-
你真的需要知道默认数据目录吗?创建后是否需要对数据库进行物理访问?
-
我正在通过管道将 Create Database SQL 发送到远程服务器,其中两个要求是 MDF 和 LDF 文件的位置:msdn.microsoft.com/en-us/library/ms176061.aspx。
-
如果您不指定文件路径(例如
CREATE DATABASE test),文件将进入默认配置位置 - 无需明确说明它们应该放在哪里,除非您希望它们放在其他地方. -
嗯,我没有意识到这一点。我确实找到了一个将返回默认路径的 Select 查询。我将更新我的原始帖子。
-
我仍然不确定您为什么需要该目录。您在上面输入的查询将找到 master 数据库所在的目录,而不是默认数据目录(例如,如果它自 master 创建以来已配置)。您可以只创建一个数据库而不指定位置以使其转到默认位置。如果您仍然需要该位置,请先创建数据库,然后获取其位置。
标签: c# sql-server create-table