我在SQLSERVER (2008 R2 EXPRESS)
管理员列表中。我在我的机器上担任管理员角色。我可以使用ServerName手动连接到SQLSERVER(通过Management Tools
)(在我的例子中是S-PROG-T\SQLEXPRESS
)。在安装过程中,我决定只使用Windows Authentication
模式。我无法连接到SS。
错误讯息为: Login failed for user S-PROG-T\admin. Cannot open database 'ProjectDB' requested by the login.
我正在使用NHibernate
的以下配置:
<session-factory>
<property name="connection.provider">
NHibernate.Connection.DriverConnectionProvider
</property>
<property name="dialect">
NHibernate.Dialect.MsSql2008Dialect
</property>
<property name="connection.driver_class">
NHibernate.Driver.Sql2008ClientDriver
</property>
<property name="connection.connection_string">
Data Source=S-PROG-T\SQLEXPRESS;Initial Catalog=ProjectDB;Integrated Security=SSPI
</property>
<property name="show_sql">
true
</property>
<mapping resource="Project.Domain.Model.Entities.Mappings.Vehicle.hbm.xml" assembly="Project.Domain" />
</session-factory>
我尝试使用.\SQLEXPRESS
数据源进行连接。入站规则不限制SSMS。
怎么了? 谢谢!
编辑:单元测试
所有内容(nhibernate
配置和架构导出试用版)都在我的单元测试中开始(我不知道这是否重要)。
[TestFixture]
public class VehicleFixture
{
[Test]
public void TestSchemaExport()
{
new SchemaExport(new Configuration().Configure()).Execute(false, true, false);
}
}
编辑:记录信息
我在日志中发现了下一个信息(路径:%ProgramFiles%\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\Log\
):
Error: 18456; State: 38.
Login failed for user ‘S-PROG-T\Admin’.
Reason: Failed to open the explicitly specified database.
根据文章:http://sql-articles.com/articles/troubleshooting/troubleshooting-login-failed-error-18456/数据库不存在或登录无法访问数据库。
我完全糊涂了。我是否应该在尝试导出架构之前(手动)创建数据库(对不起,如果问题很愚蠢)?
编辑:使用混合身份验证模式
我已设置了混合模式身份验证,并使用serveradmin
&amp;创建了新的登录信息。 sysadmin
个角色。但是除了用户名之外,错误消息仍然相同。我可以再次使用登录名和密码手动执行相同的操作(连接并创建数据库)。
答案 0 :(得分:1)
确定。我误解了整个过程。一切都可以通过身份验证,而不是连接字符串。我只是认为模式导出代表数据库自动创建,然后是模式导出。所以我创建了一个数据库并成功导出了一个模式。
答案 1 :(得分:0)
如果将数据库更改为“master”,是否可以连接NHibernate?
ProjectDB数据库用户S-PROG-T \ admin是否已映射到您使用管理工具进行连接的服务器登录?
您是否可以使用属性名称=“connection.connection_string”中的用户/密码组合连接到数据库,而不是使用集成安全性= SSPI?
编辑您写的是您创建了新登录信息。但仍然 - 登录是用于 SERVER 身份验证的内容。您必须将ProjectDB中的数据库用户映射到服务器登录才能访问数据库。
看看这个帖子:TSQL to Map User to Database
答案 2 :(得分:-1)
网站不会使用相同的身份,因此不会是管理员。您可以定义特定标识并设置ApplicationPool(或您自己的管理员帐户)以使用它。或者,使用登录/密码而不是集成安全性。