SQL Server + EXCEL VBAなどで,「オブジェクトが閉じている場合は、操作は許可されません。」 エラー

Excel VBAでSQL ServerからRecordSetを受け取るときなどに,どうみてもコードは問題ないのに 「オブジェクトが閉じている場合は、操作は許可されません。」 というエラーが出ることがある.
ストアド内で複数のSQL文を使っている場合などに出る.
一時テーブルやテーブル変数を使う場合は複数のSQL文になるのが普通なのでこのエラーが出がちである.
SQLOLEDB,SQLNCLI どちらも出る.

この場合,「SET NOCOUNT ON」を付けるとエラーが出なくなる.

参考:
PRB: エラーの ADO SQLOLEDB と参照元の #Temp テーブルのメッセージ  (MS)

SQL Server 別のSQL Serverのバックアップを復元した時にアクセスできなくなり,ログインのプロパティ等でエラーになるのを修復する方法

異なるSQL Server間でバックアップを復元した時にアクセスできなくなり,ログインのプロパティーなどでユーザーマッピングを割り当てようとすると,「ユーザー’test’の作成に失敗しました。」~「ユーザー、グループ、またはロール’test’は現在のデータベースに既に存在します。」
というようなエラーメッセージが表示されてしまうことがある.

・不明なユーザー一覧を表示する方法
USE データベース名
EXEC sp_change_users_login ‘Report’

・ユーザーマッピングの修復方法
USE データベース名
EXEC sp_change_users_login ‘Update_One’, ‘test’, ‘test’
(EXEC sp_change_users_login ‘Update_One’, ‘現在のDBに存在するユーザー名’, ‘SQL Serverログイン名’)

参考:
http://www.microsoft.com/japan/sqlserver/2005/ssj/tips/03.mspx