SQL Server Express 连接字符串 / FluentNHibernate

3

我在连接字符串方面遇到了一些问题。我尝试了很多不同的字符串和方法,但现在卡住了。

private static void InitializeSessionFactory()
{
    _sessionFactory = Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2008
                          .ConnectionString(
 @"Server=Data Source=.\SQLEXPRESS;DataBase=carDB.mdf;User ID=sa;Password=xxxSecretxxx;")
                          .ShowSql()
            )
            .Mappings(m =>
                      m.FluentMappings
                          .AddFromAssemblyOf<Car>())
            .ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, false))
            .BuildSessionFactory(); 
    }

我知道我不应该使用 'sa' 账户 - 我这样做的唯一原因是缺乏管理软件,所以我不得不使用唯一的账户。

我正在使用 SQL Server Express 数据库。

我收到的异常信息如下:

在创建 SessionFactory 时使用了无效或不完整的配置。
请检查 PotentialReasons 集合和 InnerException 以获取更多详细信息。

这是我的内部异常信息:

建立到 SQL Server 的连接时发生了与网络相关或特定于实例的错误。
找不到服务器或无法访问。
请确认实例名称正确,并且已配置 SQL Server 允许远程连接。
(提供程序:SQL Network Interfaces,错误:26 - 找不到指定的服务器/实例)

有人知道我应该如何处理吗?我已经花了几个小时来尝试解决这个问题。


你的SQL Server可以是Compact(单个带有.sdf扩展名的文件),也可以是Express(至少两个文件 - 一个.mdf,另一个.ldf)- 但不能同时存在!那么它是哪一个? - marc_s
谢谢,那就是一个Express..我会编辑我的问题。 - aLoveForCoffee
2个回答

4
在连接字符串中,您不需要指定数据库文件,而是需要指定数据库名称。因此应该是:
@"Server=Data Source=.\SQLEXPRESS;DataBase=carDB.mdf;User ID=sa;Password=xxxSecretxxx;"

但是
@"Server=Data Source=.\SQLEXPRESS;DataBase=carDB;User ID=sa;Password=xxxSecretxxx;"

假设数据库确实是名为carDB,而不是像Cars之类的其他名称。

另外,我建议使用SqlConnectionStringBuilder类来构建连接字符串,因为它可以保证语法正确的连接字符串。

顺便说一下:您知道您也可以安装管理工具(如SQL Server Management Studio for SQL Server Express)的Express版本吗?这会使事情变得更加容易。


顺便提一下:您知道您也可以安装管理工具(例如 SQL Server Express 的 SQL Server Management Studio)来管理 Express 版本吗?这会让事情变得更容易。 - 是的,我已经下载了这些工具,并将在回家后安装/配置我的 SQL Express。谢谢。 - aLoveForCoffee

0

不清楚您使用的是哪个版本的SQL Server。可能是Express或Compact。

如果是SQL Express,请尝试以下操作:

@"Data Source=.\SQLEXPRESS;Initial Catalog=carDB;User ID=sa;Password=********;"

对于 SQL Compact 来说,通常只需要指定数据库文件的路径和名称:

@"Data Source=path\\carDB.sdf;"

但对于SQL Compact,您可能需要另一个提供程序MsSqlCeConfiguration.Standard


谢谢,我回家后会尝试这个!=) - aLoveForCoffee

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接