我正在使用以下代码连接Sql Server 2008:
Connection con = null;
CallableStatement stmt = null;
ResultSet rs = null;
try
{
SQLServerDataSource ds = new SQLServerDataSource();
ds.setIntegratedSecurity(false);
ds.setServerName("localhost");
ds.setInstanceName("MSSQLSERVER2008");
ds.setPortNumber(1433);
ds.setUser("televic-edu3-dev");
ds.setPassword("internal");
ds.setDatabaseName("televic-edu3-dev");
con = ds.getConnection();
...
它给了我以下错误:
用户登录失败 'Televic的-edu3-dev的'。用户不是 与受信任的SQL Server关联 连接。
在我的SqlServer实例上启用了混合模式。我已经尝试使用相同的凭据连接到我的SqlServer实例,这是有效的。在.NET中,它确实与具有相同凭据的connectionString一起工作......那么我做错了什么?
这是来自.NET的connectionString:
TLV-EDU-LIC \ MSSQLSERVER2008;密码=内部;坚持 安全信息=真;用户 ID = Televic的-edu3-dev的;初始 目录= Televic的-edu3-dev的
顺便说一下,我也尝试了这个,这给了我同样的错误(这是合乎逻辑的):
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try
{
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
"instanceName=MSSQLSERVER2008;databaseName=televic-edu3-dev;
userName=televic-edu3-dev;password=internal;";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = DriverManager.getConnection(connectionUrl);
答案 0 :(得分:1)
好吧,省略ds.setPortNumber(1433);使它工作。不知道为什么...我的sqlserver实例正在端口1433上运行。
答案 1 :(得分:0)
您正在使用域(Windows用户名)身份验证而不是数据库身份验证。确保JVM使用相同的Windows用户名运行,因此不能作为系统服务运行。如果这不是一个选项,请改用DB身份验证。