ユーザー名/パスワードを使用して、Excel から SQL Server に接続できるようにする必要があります。私は指定しました:
'Declare variables'
Set objMyConn = New ADODB.Connection
Set objMyRecordset = New ADODB.Recordset
Dim strSQL As String
'Open Connection'
objMyConn.ConnectionString = "Driver=SQL Server;Server=SERVER\SERVER;Database=we_ci_db; Uid = genericReadWrite; Pwd=XYZ;"
objMyConn.Open
'Set and Excecute SQL Command'
strSQL = "select TOP 1 * from tblUsers WHERE alias='" & "username" & "'"
'Debug.Print strSQL
'Open Recordset'
Set objMyRecordset.ActiveConnection = objMyConn
objMyRecordset.Open strSQL
'Copy Data to Excel'
Sheets("Sheet1").Range("A4").CopyFromRecordset (objMyRecordset)
このコードは、いくつかの基本的な詳細を「システム」タブにコピーし、いくつかのフラグ「UserID、SystemAccess」などを更新してから、セキュリティのためにパスワード ハッシュを削除します。
今までは問題なく機能していたと思っていましたが、どうやら Windows 認証に戻っていたようです (私のチームと私は、SQL Server のユーザーとして明示的にリストされています。
しかし、サーバーに NT ログインとして明示的に追加されていない人を取得すると、機能しません。サーバーが混合認証用に設定されていることに注意してください。
Excelでは、-2147467259 - [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot open database "we_ci_db" requested by the login. The login failed.
サーバーログには次のように書かれています:
Login failed for user 'DOMAIN\user'. Reason: Failed to open the explicitly specified database. [CLIENT: xx.xx.xx.xx]
バグが発生し始めているため、これを機能させるための支援をいただければ幸いです。サーバーがユーザー名を無視している場合でも、接続文字列は少なくとも部分的に機能しますが、それが SQL Server の問題なのか接続文字列の問題なのかはわかりません。