Coldfusion 9 DSN less连接SQL 2008 Windows身份验证

时间:2015-02-20 19:44:46

标签: 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.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>

错误:

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

2 个答案:

答案 0 :(得分:3)

(暂时忽略你的问题,......)

虽然可以通过手动连接来实现,但是有一个特定的原因你不能只使用标准的DSN吗?这样效率会更高,并且需要更少的代码/清理。更不用说它避免了一些common pitfalls of manual connections

AFAIK,您可以在“显示高级设置&gt;连接字符串”下输入AuthenticationMethod=Type2,将DSN设置为使用windows authentication。将“用户名”和“密码”字段留空。

<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>

您也可以使用SQL Server JDBC Driver代替。另见Connecting with Integrated Authentication On Windows。但是,这需要将驱动程序jar和DLL(sqljdbc_auth.dll)添加到服务器,这听起来是你无法做到的。

  • 驱动程序类:com.microsoft.sqlserver.jdbc.SQLServerDriver
  • 网址:jdbc:sqlserver://localhost:1433;integratedSecurity=true;

答案 1 :(得分:1)

找到一个示例here,显示网址中的用户名和密码。

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

您的SQL Server URL未传入任何凭据,请尝试一下。