質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

1回答

6310閲覧

VBAでSQLサーバに接続しようとすると「SSPIコンテキストを生成できません。」エラーが表示される

ffk

総合スコア5

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2022/02/09 13:25

ローカルネットワーク上のSQL EXPRESSサーバにリモート接続し、
VBAでデータベースにアクセスしようとすると
「SSPIコンテキストを生成できません。」
というエラーが表示されてしまいます。
この状況を解決するにはどうすればよいでしょうか?
分かる方がいらしたら教えていただければ幸いです。
よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ffk

2022/02/09 14:20

認証方法はNTLM認証でした。
ffk

2022/02/09 14:26

上記のエラーはSQL認証で発生します。
guest

回答1

0

ベストアンサー

Windows 認証で SQL Server に接続しようとした際に認証エラーになっているものと思われます。
SQL Server 認証の構成にて接続できるか試してみるのは如何でしょうか?

■ 「SSPI コンテキストを生成できません」の解決方法
https://social.msdn.microsoft.com/Forums/aspnet/ja-JP/c7e396b1-2678-4db0-b528-8c7426aa8daa/12300sspi

投稿2022/02/09 13:49

cx20

総合スコア4693

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ffk

2022/02/09 14:25

返信ありがとうございます。 上記のエラーはSQL認証で発生します。 記載忘れていまい申し訳ありません。
cx20

2022/02/09 15:07

■ エラーの例 ・名前付きインスタンスで構成されているが、SQL Server Browser サービスを無効化している(インスタンスが見つからない) → 名前付きインスタンスの場合、SQL Server Browser サービスが有効化されていることを確認下さい。 ・SQL Server ネットワークの構成で「TCP/IP」プロトコルが有効化されていない → TCP/IP プロトコルが有効化されていることを確認ください。 ・ファイアウォールでポートを空けていない → TCP 1433, UDP 1434 ポートを空けて下さい。
ffk

2022/02/10 11:36

返信ありがとうございます。 全て行ったのですが、解消されませんでした。 このサイト https://docs.microsoft.com/ja-jp/sql/relational-databases/security/choose-an-authentication-mode?view=sql-server-ver15 を見たところ、SQL Server 認証ではKerberos セキュリティ プロトコルを使用できないことが分かりました。 VBAでSQLサーバに接続しようとすると「SSPIコンテキストを生成できません。」というエラーが表示されるということはおそらくKerberos認証でアクセスしようとしているため(間違っていたらすみません)、このようなエラーが表示されるということでしょうか?
cx20

2022/02/10 12:51

接続文字列に「Integrated Security=True」や「Integrated Security=SSPI」を指定した場合は、 SQL Server 認証ではなく、Windows 認証として接続しようとします。 SQL Server 認証で接続する場合は「Integrated Security~」の替わりに「User ID=xxxx;Password=yyyy;」を指定してみてください。 もしくは、ADO での接続の場合は、Connection オブジェクトの Open メソッドの第2、第3引数で、ID/PWDを指定することができます。その場合、SQL Server 認証で接続されます。 -------------------------------------------- Dim cn Set cn = CreateObject("ADODB.Connection") cn.Open "PROVIDER=SQLOLEDB;SERVER=IPAddress\インスタンス名;DATABASE=master;", "sa", "******" Dim rs Set rs = cn.Execute("SELECT @@version") WScript.Echo rs(0) --------------------------------------------
ffk

2022/02/10 13:25

Dim PROVIDER As String PROVIDER = "SQLOLEDB" Dim DATA_SOURCE As String DATA_SOURCE = "入力済み" 'サーバ名 Dim DATABASE As String DATABASE = "入力済み" 'データベース名 Dim USER_ID As String USER_ID = "入力済み" 'ユーザID Dim PASSWORD As String PASSWORD = "入力済み" 'ユーザパスワード Dim strSQL As String Dim cn As New ADODB.Connection '-------------------------------- ' データベース接続 '-------------------------------- 'SQL Server認証 cn.ConnectionString = "Provider=" & PROVIDER _ & ";Data Source=" & DATA_SOURCE _ & ";Initial Catalog=" & DATABASE _ & ";Trusted_Connection=Yes" cn.Open cn.Close これで実行した場合に質問したエラーが出てしまします。
cx20

2022/02/10 14:19

接続文字列の「Trusted_connection=yes」は「Integrated Security=SSPI」と同等の意味になります。 「;Trusted_connection=yes」を除去して、かわりに「;User ID=xxxx;Password=yyyy;」を指定してみてください。 User ID/Passwordは、SQL Server 認証のID/PWD を入れて下さい。
ffk

2022/02/11 00:24

無事に解決することができました! 本当にありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問