ExcelからSQL Serverへのデータ接続を作成し、多くのSQLクエリを正常に実行できました。しかし、一時テーブルが含まれていると、TSQLが機能しません。例えば:
select * into #t from compass3.dbo.freq
select * from #t where freq_id>2
(明らかに、この場合は#tを使用する必要はありません。最も単純な例を示しています。)これはSSMSで正常に機能しますが、Excel経由で実行すると、「接続を更新できませんでした 'audbbicube '。テーブル' ion Query1 'が存在しない可能性があります。
他のいくつかのSO投稿では、人々はset nocount on
ですが、この場合は違いがありませんでした。
以下は動作するようです...
set nocount on
declare @t table(fid int) -- I'm sure I could add the rest of the columns if I wanted to
insert @t select freq_id from compass3.dbo.freq
select * from @t where fid>2
したがって、nocount
をオンにして、一時テーブルではなくテーブル変数を使用する限り、必要なことを達成できます。
上記の回答に追加したかった-クエリの先頭でSET NOCOUNT ON
を使用するだけで、通常の一時テーブルSELECT name INTO #Names FROM Employee
が機能するはずです。
ここではテーブル変数は必要ありません。
また、SET ANSI_WARNINGS OFF
を追加して、「NULL値が集合体によって削除される」などのメッセージを回避することもできます。