SQL Serverの一時テーブル(接頭辞#
)LocalDBインスタンスでサポートされていますか?
すべてのバージョンについて回答することはできませんが、SQL Server 2012からSQL Server 2017まではサポートされていると確信しています
LocalDBには、SQL Server Expressと同じプログラミング機能があります。
SQL Server Express LocalDBは、Expressの軽量バージョンであり、すべてのプログラマビリティ機能を備えていますが、ユーザーモードで実行され、構成のインストールが高速で、前提条件のリストが短いです。
次に、前のポイントを基に、SQL Server Express 2012 T-SQL構文
Expressは、SQL Serverのどのエディションにもある同じT-SQL言語要素をサポートしています。データベースに対してデータ操作言語クエリを発行できるだけでなく、データ定義言語ステートメントを実行して、ビュー、トリガー、カーソル、ストアドプロシージャなどのオブジェクトを作成することもできます。
テスト(SQL Server 2017)
USE testdb
GO
CREATE TABLE #temp (id int , value nvarchar(255));
INSERT INTO #temp( id ,value)
SELECT 5, 'bla';
SELECT * FROM #temp;
結果
id value
5 bla
一時テーブルは、dbの互換モードを100(2008)に変更した場合にも機能します。
はい。すべてのバージョンの一時オブジェクト(ローカル一時テーブル、グローバル一時テーブル、テーブル変数、ローカル一時ストアドプロシージャ、グローバル一時ストアドプロシージャ)は、SQL Server Express LocalDBのすべてのバージョンで使用できます。
バージョン2012、2014、2016、2017で5つのオブジェクトタイプのそれぞれについて次の簡単なテストを実行しましたが、エラーは発生しませんでした。
CREATE TABLE #LocalTempTable (Col1 INT);
SELECT * FROM #LocalTempTable;
CREATE TABLE ##GlobalTempTable (Col1 INT);
SELECT * FROM ##GlobalTempTable;
DECLARE @TableVariable TABLE (Col1 INT);
SELECT * FROM @TableVariable;
GO
CREATE PROCEDURE #LocalTempProc
AS
SELECT 1;
GO
EXEC #LocalTempProc;
GO
CREATE PROCEDURE ##GlobalTempProc
AS
SELECT 2;
GO
EXEC ##GlobalTempProc;
また、SQL Serverは、システムストアドプロシージャ、msdb
にある機能などで使用されているため、利用できない場合でも起動しない可能性があります。
はい、Localdbは一時テーブルをサポートしています。
USE [test];
GO
CREATE TABLE #mytemp
(
id int,
foo int,
bar int
);
GO
SELECT
*
FROM
tempdb.INFORMATION_SCHEMA.TABLES;
GO
DROP TABLE #mytemp;
GO
戻り値:
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
---------------- ---------------- ------------------------------------ ----------
tempdb dbo #mytemp________________00000000000A BASE TABLE
そしてsys.databases
をクエリします:
SELECT
name,
database_id
FROM
sys.databases;
同じシステムデータベース構造を返します。
name database_id
--------- -----------
master 1
tempdb 2
model 3
msdb 4
test 5
@RandiVertongenに同意します。
LocalDBのインストールでは、SQL Serverデータベースエンジンの起動に必要な最小限のファイルセットがコピーされます。 LocalDBがインストールされると、特別な接続文字列を使用して接続を開始できます。接続すると、必要なSQL Serverインフラストラクチャが自動的に作成および開始され、アプリケーションが複雑な構成タスクなしでデータベースを使用できるようになります。開発者ツールを使用すると、SQL Serverの完全なサーバーインスタンスを管理しなくてもTransact-SQLコードを記述してテストできるSQL Serverデータベースエンジンを開発者に提供できます。
LocalDBの詳細については、公式リンク source を参照してください
注制限があります:
1)LocalDBをマージレプリケーションサブスクライバーにすることはできません。
2)LocalDBはFILESTREAMをサポートしていません。
3)LocalDBでは、Service Brokerのローカルキューのみが許可されます。
4)NT AUTHORITY\SYSTEMなどのビルトインアカウントが所有するLocalDBのインスタンスは、Windowsファイルシステムのリダイレクトが原因で、管理性の問題が発生する可能性があります。代わりに、所有者として通常のWindowsアカウントを使用してください。
これが役に立てば幸いです!