MSSQL

ROW_NUMBER関数

結果レコードセットに連番を付与する関数。 PARTITION BY句を指定することにより、値がブレイクした場合に1から振りなおすような設定も可能。 以下使用例 select *, ROW_NUMBER() OVER(ORDER BY COL2) as 連番 From wk_hoge ↓結果 COL1 COL2 VAL 連番 -----…

エクステントの発生状況を調べる

1.Management Stadioを起動する 2.左のツリーより、対象のDBを選択し、レポート→標準レポート→ディスク使用量でレポートを表示する 3.データ/ログファイルの自動拡張/自動圧縮イベントを開く 動作確認環境:SQL Server 2008 Enterprise Edition

ログ出力

SQLServerのプロシージャからテキストログを出力する例 実行するにはxp_cmdshellの権限を付与しておく必要がある Declare @memo varchae(200) SET @memo = 'echo hogehoge >> C:\hoge.txt' EXEC master..xp_cmdshell @memo 動作確認環境:SQL Server2008 Ente…

OPENROWSET関数

SQL Server 2008の機能でプロバイダ情報を指定することで 他のデータベースやAccess、Excelファイルにアクセスしてクエリを発行することができる機能 (アドホッククエリともいう)。 デフォルトではOPENROWSETは無効になっているため以下のSQLで有効にする必…

ERROR_LINE

エラーの発生した行番号を返す関数。他にもERROR_MESSAGE,ERROR_PROCEDURE等がある。 ストアドでエラーが発生した場合の原因調査に便利。 テスト用スタブ ALTER PROCEDURE procTest @param1 int AS SET @param1 = 1/ 1 SET @param1 = 1/ 0 return 0 テスト用…

Reporting Services

Reporting Services を使用してレポートを作成するにはレポートサーバを構築し、 その後レポートを作成して配置する必要がある サーバ構築からレポート作成、公開への手順は以下の通り ■レポートサーバを構築する SQL Server 2008 ではReporting ServicesがI…

SQL Server プロセスにアタッチできませんでした

SQL Server 2008 の Management Stadioでデバッグを実行した場合に 「SQL Server プロセスにアタッチできませんでした」のエラーが発生することがある。 これはManagement Stadioを実行しているWindowsユーザが SQL Serverのsysadminの権限を持っていない場…

SQLSERVER同士のリンクサーバ

SQL SERVER 2008からリンクサーバを使って他のSQL SERVER 2008に接続する手順は以下の通り 1.Management Stadioで「サーバーオブジェクト」→「リンクサーバ」のツリー選ぶ 2.右クリック→「新しいリンクサーバー」をクリック 3.「全般」ページのリンクサーバ…

bcpユーティリティ

bcpユーティリティを使用するとDBとテキスト間のインポートとエクスポートを行うことができる 以下、タブ区切りでのテキストのインポート、エクスポートの使用例 exp.bat (エクスポートの例) ::サーバ名 SET SVNAME=hogeSvr ::DB名 SET DBNAME=hogeDB ::ユー…

トランザクションログの縮小

SQL Server2008でのトランザクションログを縮小させる方法は以下の通り --データベースのバックアップ BACKUP DATABASE hogeDB TO DISK = 'nul' --トランザクションログのバックアップ BACKUP LOG hogeDB TO DISK = 'nul' --トランザクションログの圧縮 DBCC…

DBCC CHECKIDENT

SQL ServerでIdentityを初期化するにはDBCC CHECKIDENTを実行すればよい DBCC CHECKIDENT( T_HOGE, RESEED, 0)第1パラメタ→テーブル名 第2パラメタ→RESEED 第3パラメタ→初期値 (0以外も設定可) データが消えてもよいのであればTruncate Tableでも初期化す…

プロシージャを削除する

データベースに登録されているすべてのストアドプロシージャを削除するSQL --カーソル定義 DECLARE curProc CURSOR FOR SELECT name FROM sys.procedures DECLARE @wkname varchar(20) --カーソルオープン OPEN curProc --カーソルフェッチ FETCH NEXT FROM …

SSISパッケージのトランザクション

SSISではデフォルトではタスクごとにトランザクションが実行される。 もし、トランザクションをパッケージ全体で行いたい場合は以下のように設定するとよい。 1.パッケージのプロパティ「TransactionOption」の値を「Required」にする デフォルト→Supporte…

Batでストアドの戻り値を取得

%errorlevel%を使用するとsqlcmdで直近に実行したSELECTの結果を取得することができる なので、Batでストアドの戻り値を取得したい場合は ストアドの戻り値をSELECT文で返すようBatファイルで記述すればよい 以下、使用例 呼び出し元Bat ::ストアドの実行 sq…

インデックス付きビュー

SQL Server2008 ではどのEditionかに関わらず、インデックス付きビューを作成できる 作成するSQLは以下の通り CREATE VIEW [dbo].[V_hoge] WITH SCHEMABINDING AS SELECT hoge1, cast(hoge as int) as hoge_int FROM dbo.zz_hoge GO CREATE UNIQUE CLUSTERED…

パッケージのパスが参照されるオブジェクトを見つけることができません

構成ファイルを使用したdctxファイルを dtexecユーティリティで実行すると以下のエラーが発生することがある コード: 0x80012017 ソース: パッケージ 説明: パッケージのパスが参照されるオブジェクトを見つけることができません これは構成ファイルとdtcxフ…

TRY-CATCH

SQL Server 2005からTRY-CATCHで例外を拾うことができる (テーブルが存在しないなどの重度のエラーは除く) 以下、仕様例 BEGIN TRY Declare @wk int --正常 SET @wk = 1 / 1 --ZERO除算 SET @wk = 1 / 0 END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS Error…

XML構成ファイル

SSISのXML構成ファイルを使用するとSSISパッケージの実行時に 必要な情報を外部ファイルに記述しておくことができる データベースの接続情報やファイルのパスなどを各パッケージ毎に記述するのではなく 一元管理したい場合などに適している (iniファイルみた…

ServerStorage

SSISでProtectionLevelをServerStorageにするとデータベース ロールで アクセス制御を行う ProtectionLevelはVisual Stadioのプロパティで設定するのではなく、 SSISパッケージストアへ登録する際に行うので注意 以下、ProtectionLevelがServerStorageで作成…

ProtectionLevel

SSISパッケージではパッケージのセキュリティレベルをProtectionLevelプロパティで設定することができる 以下、プロパティの種類についての説明 DontSaveSensitive →接続文字列中のパスワードなど機微なプロパティはパッケージに保存されない 機微なプロパテ…

Microsoft SQL Server 2008 アップグレードアドバイザ

アップグレードアドバイザはSQL Server 2000、2005を2008に アップグレードした際の問題点等を分析してくれるツール DTSを使用している場合は特にこのツールで分析しておくとよい ダウンロードはこちら http://www.microsoft.com/downloads/details.aspx?Fam…

動的プロパティタスク

動的プロパティタスクを使用するとDTSパッケージの実行時にiniファイル等の外部リソースを取得し、 その値をプロパティとして設定してパッケージを実行することができる 例えば、データベースの接続情報をiniファイルに設定したり、 テキストへの出力元をSQL…

トリガ一覧

データベースに格納されているトリガはSYSOBJECTSで参照することができる EnterPriseManagerではトリガ一覧が表示できないのでSQLを書いてみた 以下、トリガ一覧を出力するSQL SELECT TR.NAME トリガ名, TBL.NAME テーブル名 FROM SYSOBJECTS TR LEFT JOIN S…

DELETE FROM FROM

DELETE句ではFROM句を2つ記述することができる 以下のSQLはWHERE句に該当するTBL1のデータを削除する(Exsist句と同じ) DELETE FROM TBL1 FROM TBL2 WHERE TBL1.HOGE_CD = TBL2.HOGE_CD この書き方はSQL Serverの方言みたい 動作確認環境:SQL Server 2000

データベース ID 104 が見つかりませんでした。

SqlServer2000でストアドをコンパイルしようとしたら以下のエラーが発生し コンパイルできないことがある サーバー : メッセージ 913、レベル 16、状態 8、行 70 データベース ID 104 が見つかりませんでした。データベースがまだアクティブになっていないか…

DTSをSQLServerに保存

ファイルで保存した構造化ストレージファイルをSQLServerに保存する手順は以下の通り 1.EnterPrise Managerを起動する 2.ツリーの「データ変換サービス」を選択し、右クリック→「パッケージを開く」でDTSファイルを選ぶ 3.「パッケージ」→「名前を付け…

SQLで照合順序を指定

SQL Serverの照合順序はデフォルトではデータベースのプロパティで設定した照合順序が適用されるが COLLATE句を使用すると特定のSQL文のみで照合順序を変更することができる。 大文字・小文字・全角半角を区別する select * From M_商品 where M_商品.商品コ…

従属関係

SYSDEPENDSテーブルには従属関係の情報が格納されている SYSDEPENDSを使用して以下のように使用しているテーブル、ストアド等を調べることができる SELECT DISTINCT SYSDEPENDS.ID, PARENTOBJ.NAME, SYSDEPENDS.DEPID, CHILDOBJ.NAME, CHILDOBJ.XTYPE FROM S…

DTSを構造化ストレージファイルにエクスポート

SQL Server 登録されている DTSパッケージを構造化ストレージ ファイルして保存することができる VBSを使用してDTSファイルに保存するのは以下のとおり Const DTSSQLStgFlag_UseTrustedConnection=256 'DTSの出力先パス★ Const EXP_PATH ="D:\DTSEXP\" 'SQL…

SQL Serverのコンピュータ名を変更

SQL Serverがインストールされているマシンのコンピュータ名を変更するのは手順は以下の通り 1.コンピュータ名を変更して再起動する 2.SQLServerで以下のクエリを実行して変更した内容を通知する sp_dropserver <old_name> GO sp_addserver <new_name>, local GOは変更前のコ</new_name></old_name>…