C# 创建并连接到新数据库
我的应用程序使用以下字符串成功创建了一个新数据库:C# 创建并连接到新数据库,c#,sql-server,C#,Sql Server,我的应用程序使用以下字符串成功创建了一个新数据库: SqlString = $"CREATE DATABASE {_databaseName} ON PRIMARY " + $"(NAME = {_databaseName}_Data, " + $"FILENAME = '{_filePath}', " + "SIZE = 8192KB, MAXSIZE = UNLIMITED, FILEGROWTH = 10%) "
SqlString = $"CREATE DATABASE {_databaseName} ON PRIMARY " +
$"(NAME = {_databaseName}_Data, " +
$"FILENAME = '{_filePath}', " +
"SIZE = 8192KB, MAXSIZE = UNLIMITED, FILEGROWTH = 10%) " +
$"LOG ON (NAME = {_databaseName}_Log, " +
$"FILENAME = '{_databasePathLdf}', " +
"SIZE = 8192KB, " +
"MAXSIZE = UNLIMITED, " +
"FILEGROWTH = 10%)";
ExecuteSqlQuery(@"server=.\SQLEXPRESS; Trusted_Connection = Yes", SqlString);
然后,当我尝试重新连接到数据库时,请使用以下连接字符串
internal string ConnectionString(String databaseName)
{
return $"Server =.\\SQLEXPRESS;Database={databaseName};Trusted_Connection=Yes;";
}
我得到以下错误
为清楚起见,连接字符串都使用Trusted\u connection=Yes
,并且在创建和连接数据库时,所有者和登录名是相同的
为进一步明确起见,我使用OpenFileDialog导航到数据库,以便使用以下内容进行连接:
internal string OpenFileDialog(String initialDirectory)
{
string filePath = "";
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.InitialDirectory = initialDirectory;
openFileDialog.Filter = "mdf Database file (*.mdf)|*.mdf";
openFileDialog.RestoreDirectory = true;
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
filePath = openFileDialog.FileName;
}
}
return filePath;
}
该错误发生在DialogResult.OK上
在此实例中,如何使用OpenFileDialog返回要连接的数据库的文件路径
我正在使用SQL Server Express 2019(v15.0.2070)
提前感谢您的帮助。“我的应用程序使用以下字符串成功创建了一个新服务器”,该字符串创建了一个数据库,而不是服务器。Express是您将要安装的服务器(实例)。至于这个错误,我怀疑这个连接字符串是否会导致它。您不会“打开”数据库文件;它附加到一个实例,然后您向该实例发送SQL命令以查询所述数据库。感谢您的及时响应并更正我的错误。它应该是数据库而不是服务器。但是,我不明白为什么在尝试打开与数据库的连接时出现错误“你没有权限”。集成安全性使用windows凭据。因此,它应该使用与您登录时使用的相同的用户帐户。我会使用SQLServerManagementStudio并检查服务器,以确保您具有访问权限。在登录GUI上,确保设置了Windows凭据的下拉列表。然后检查您是否有权访问数据库。使用SSMS中的资源管理器检查访问权限,您可以进行查询以测试您是否可以读取数据库/表。仅因为Sql Server登录名具有创建新数据库的权限,并不自动意味着登录名具有使用或连接其创建的任何数据库的权限。那是分开管理的。不,不是。用户不应通过SQL server数据目录浏览数据库。应用程序应连接到SQL server并获取可用数据库的列表。