ラベル SQL Server の投稿を表示しています。 すべての投稿を表示
ラベル SQL Server の投稿を表示しています。 すべての投稿を表示

2014年8月7日木曜日

SQL Server 2012 トランザクションログの圧縮

とりあえずメモ。
TODO: あとで説明入れる。

BACKUP DATABASE test_db TO DISK = N'NUL';
--- 実際にバックアップする場合
--- BACKUP DATABASE test_db TO DISK='d:\backup\air.bak' WITH INIT

EXEC sp_helpfile;

BACKUP LOG test_db TO DISK = N'NUL'

DBCC SHRINKFILE ('test_db_log', 1);


--- 以下はタスク実行のコマンド
sqlcmd -S [.\SQLEXPRESS] -U [ユーザー名] -P [パスワード] -i [d:\backup.sql]  > [d:\backup.log]

2014年7月1日火曜日

SQL Server 2012 で IDENTITY の値を再設定する

SQL Server 2012 にて、IDENTITY の値をリセットまたは任意の値にする場合、 以下のクエリを実行する。

--- テーブル hoges の IDENTITY の値を 1 に再設定する。
DBCC CHECKIDENT ('hoges', RESEED, 1) WITH NO_INFOMSGS

 --- テーブル hoges の IDENTITY の値を確認する。
DBCC CHECKIDENT ('hoges', NORESEED );

2014年6月9日月曜日

Access 2010 / Access 2013 (SQL Server を使用時)のメモ

Access 2013 で ADP がなくなり、 SQL Server からどのようにデータを取得するか困る。
クライアントに ODBC を登録してリンクテーブルする方法にしようとするも、台数が多く面倒なので、
以下 Access から ODBC に登録せずに SQL Server からデータを読み込む方法を検討中。

a) パススルークエリを使用する
Microsoft の以下「パススルー クエリを使用してデータベース サーバーで SQL を処理する」を参照 Access 2010, 2013 でもほぼ同じ
http://office.microsoft.com/ja-jp/access-help/HA010206488.aspx


b) クエリでテーブルを以下のように指定する(DAO、クエリ で使用)
例: データベース名: TESTDB,  ユーザー: test_user パスワード: test_pwd テーブル名: samples の場合
SELECT s.* FROM [ODBC;DSN=TESTDB;DATABASE=TESTDB;UID=test_user;PWD=test_pwd].samples s 

c) VBA から ADO を使って直接取得する


フォームの Recordset に直接 c) で設定した Recordset を入れたところエラーになるので、
b) の方法で設定した DAO の Recordset をフォームに設定するようにした。

普通にリンクテーブルを使うよりも若干表示等が早くなった気がするものの、この方法が良いかどうかは検証および検討中。

なおフォーム以外のコントローラーの Recordsource に対しては ADO は従来通り使える模様。

2012年3月30日金曜日

ASP.NET ( IBatis.NET ) から SQL Server 2008 への接続について

IBatis.NET にて、

# sqlmap.config

<provider name="sqlServer2.0"/>
<dataSource name="lec2" connectionString="Persist Security Info=False;Data source=(local)\SQLEXPRESS;Initial Catalog=xxxx;User ID=xxxxx;Password=xxxxx;" />

# provider.config

<provider
     name="sqlServer2.0"
     enabled="true"
     description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V3.5"
     assemblyName="System.Data, Version=2.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"
     connectionClass="System.Data.SqlClient.SqlConnection"
     commandClass="System.Data.SqlClient.SqlCommand"
     parameterClass="System.Data.SqlClient.SqlParameter"
     parameterDbTypeClass="System.Data.SqlDbType"
     parameterDbTypeProperty="SqlDbType"
     dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
     commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
     usePositionalParameters = "false"
     useParameterPrefixInSql = "true"
     useParameterPrefixInParameter = "true"
     parameterPrefix="@"
     allowMARS="true"
/>
上記でも接続できなかったので Windows ファイアーウォールで TCP/UDP 1433 の確認と「SQL Server 構成ツール」の 「SQL Server 構成マネージャー」のTCPおよび名前付きパイプが有効になっているか確認。
> どうも TCP は関係無かった模様…

それでも繋がらなかったので色々と見直し悩んだ結果、上記 sqlmap.config の dataSource の接続文字列で data source=(local)\SQLEXPRESS; の所を data source=(local)/SQLEXPRESS; としていたのが原因と分かる。

気づくまで 1時間30分ぐらい掛かった・・・。

環境: Windows 2008 r2 (64bit), IIS 7.5, SQL Server 2008 r2 Express, .NET Framework 3.5