更新
虽然原始问题询问了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>
错误:
处理请求时发生错误 此驱动程序未配置为集成身份验证。
答案 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未传入任何凭据,请尝试一下。