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并获取可用数据库的列表。