簡體   English   中英

Coldfusion 9 DSN less連接MSSQL 2008 Windows身份驗證

[英]Coldfusion 9 DSN less Connection MSSQL 2008 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>

錯誤:

處理請求時發生錯誤此驅動程序未配置為集成身份驗證。

(暫時忽略你的問題,......)

雖然可以通過手動連接來實現,但是有一個特定的原因你不能只使用標准的DSN嗎? 這樣效率會更高,並且需要更少的代碼/清理。 更不用說它避免了手動連接的一些常見缺陷

AFAIK,您可以通過在“顯示高級設置>連接字符串”下輸入AuthenticationMethod=Type2來將DSN設置為使用Windows身份 AuthenticationMethod=Type2 將“用戶名”和“密碼”字段留空。

<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驅動程序 另請參閱在Windows上連接集成身份驗證 但是,這需要將驅動程序jar和DLL(sqljdbc_auth.dll)添加到服務器,這聽起來是你無法做到的。

  • 驅動程序類: com.microsoft.sqlserver.jdbc.SQLServerDriver
  • URL: jdbc:sqlserver://localhost:1433;integratedSecurity=true;

在此處找到一個示例,顯示URL中的用戶名和密碼。

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

您的SQL Server URL未傳遞任何憑據,請嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM