Sql server Coldfusion 9无DSN连接MSSQL 2008 Windows身份验证

Sql server Coldfusion 9无DSN连接MSSQL 2008 Windows身份验证,sql-server,coldfusion,connection,windows-authentication,Sql Server,Coldfusion,Connection,Windows Authentication,更新: 虽然最初的问题是关于windows身份验证的,但任何连接方法都可以。只要不需要创建DSN 我正在尝试使用Windows身份验证连接我的数据库。这是代码。 请告知。谢谢 <cfscript> classLoader = createObject("java", "java.lang.Class"); classLoader.forName("sun.jdbc.odbc.JdbcOdbcDriver"); dm = createObject("java","java

更新:

虽然最初的问题是关于windows身份验证的,但任何连接方法都可以。只要不需要创建DSN

我正在尝试使用Windows身份验证连接我的数据库。这是代码。 请告知。谢谢

<cfscript>
  classLoader = createObject("java", "java.lang.Class");
  classLoader.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
  dm = createObject("java","java.sql.DriverManager");
  dburl = "jdbc:sqlserver://192.168.3.150:1433;databasename=RsDB;integratedSecurity=true";
  con = dm.getConnection(dburl,"", "");
  st = con.createStatement();
  rs = st.ExecuteQuery("SELECT top 10 * FROM pa (nolock)");
  q = createObject("java", "coldfusion.sql.QueryTable").init(rs);   
</cfscript>

<cfoutput query="q">
  email = #email#<br />
</cfoutput>
错误:

处理请求时出错 此驱动程序未配置为集成身份验证

找到了一个在URL中显示用户名和密码的示例

<cfset connection = driverManager
.getConnection("jdbc:mysql://localhost:3306/demodb?user=demouser&password=demopass")>

您的SQL Server URL没有传递任何凭据,请尝试一下。

暂时忽略您的问题

虽然可以通过手动连接实现,但是否有特定的原因使您不能仅使用标准DSN?这将更加高效,并且需要更少的代码/清理。更不用说它避免了一些错误

好的,您可以通过在“显示高级设置>连接字符串”下输入AuthenticationMethod=Type2来设置要使用的DSN。将用户名和密码字段留空

<cfquery name="qTest" datasource="YourDSN">
   SELECT SYSTEM_USER AS LoginName, DB_NAME() AS DatabaseName
</cfquery>

<cfdump var="#qTest#" label="Show Connection Settings">
*注意:DSN将使用CF服务用户帐户,因此根据需要进行调整

更新:

如果绝对必须使用手动连接,请尝试使用内置驱动程序而不是JDBCODBC桥。但是,请确保始终关闭数据库对象。否则,开放的连接将开始堆积,糟糕的事情将发生

请记住,打开数据库连接非常昂贵。如果不使用DSN,您将失去连接池的好处。因此,总的来说,这种方法比简单使用DSN的效率要低

<cfscript>
   classLoader = createObject("java", "java.lang.Class");
   classLoader.forName("macromedia.jdbc.MacromediaDriver"); 
   dm = createObject("java","java.sql.DriverManager");
   dburl = "jdbc:macromedia:sqlserver://127.0.0.1:1433;databasename=RsDB;AuthenticationMethod=Type2";
   con = dm.getConnection(dburl);
   st = con.createStatement();
   rs = st.ExecuteQuery("SELECT getDate() AS TestValue");
   q = createObject("java", "coldfusion.sql.QueryTable").init(rs); 
   // ALWAYS close all objects!
   rs.close();
   st.close();
   con.close();
   writeDump(q);
</cfscript>
您也可以使用。另见。但是,这需要将驱动程序jar和DLL sqljdbc_auth.DLL添加到服务器,这听起来像是无法做到的

驱动程序类:com.microsoft.sqlserver.jdbc.SQLServerDriver URL:jdbc:sqlserver://localhost:1433;integratedSecurity=true;
考虑到使用windows身份验证设置ColdFusion数据源是多么容易,您为什么还要尝试这样做呢?但这违背了集成身份验证的目的-为什么我使用DSNless,因为我没有CFadmin访问权限为什么不请管理员为您创建DSN?虽然你可以手动操作,但效率要低得多。我只拥有阅读制作权限。。对于开发,我有开发数据库,现在我必须对数据进行一些调试,然后在开发时无法刷新数据。。。我正在做的是尝试连接生产以获取记录并进行一些调试。。。这不是一个可以用聪明的代码解决的编程问题。你只是被剥夺了完成工作的工具。和你的老板谈谈。