![](/img/trans.png)
[英]MSSQL connection string - Windows Authentication using another set of credentials
[英]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
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.