SqlServer2008以降かと思いますが、INSERT文にて複数のレコードを挿入できるようになりました。SqlServerCompact4.0でも同じような処理をしたいのですが、クエリ解析でエラーが発生してしまいます。
ソフトウェア開発日記さんでも紹介されていますが、SqlServer2008以降では
INSERT INTO [tbl従業員] ([clm_ID],[clm_氏名],[clm_生年月日]) VALUES (1,'name1','1980/10/1') , (2,'name2','1976/3/5')
のようにVALUES以降をカンマで区切ることにより、複数のレコードを挿入することができました。
SqlServerCompact4.0はSqlServer2012の流れを汲んでいるので(もちろん、上記コードはSqlServer2012でも可能です)可能かと思っていたのですが、いざ実行してみるとVALUES後のカンマが不正トークンだと言われてしまいます。
まさかと思ってMSDNを検索してみると、SqlServer2012のINSERTは
[ WITH <common_table_expression> [ ,...n ] ] INSERT { [ TOP ( expression ) [ PERCENT ] ] [ INTO ] { <object> | rowset_function_limited [ WITH ( <Table_Hint_Limited> [ ...n ] ) ] } { [ ( column_list ) ] [ <OUTPUT Clause> ] { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ] | derived_table | execute_statement | <dml_table_source> | DEFAULT VALUES } } } [;]
12行目にある「VALUES ( { DEFAULT | NULL | expression } [ ,…n ] ) [ ,…n ] 」の表現から複数のレコードが挿入できることがわかります。
一方でSqlServerCompact4.0のINSERTは
INSERT [INTO] table_name [ ( column_list ) ] { VALUES ( { DEFAULT | NULL | expression } [ ,...n] ) | derived_table }
以上のようになっており、複数レコードを指定できる書式になっていませんでした。
SqlServerCompact4.0で複数のレコードをINSERTする際には、レコード数と同じ回数のINSERTを発行する必要があるようです。