sqlcmdの空白が多くて見にくいので –W で余計な空白の出力を省く

● sqlcmdの空白が多くて見にくいので –W で余計な空白の出力を省く

sqlcmd -W
sqlcmd -S <サーバ名>  -U  <ユーザ名>  -P  <パスワード>  -d  <データベース名>  -W
No.1875
10/06 15:20

edit

シーケンスを採番して取得

● シーケンスを採番して取得

SELECT NEXT VALUE FOR シーケンス名
No.1806
07/02 11:03

edit

SQL Server で スキーマの作成 / ログインの作成

● SQL Server で スキーマの作成

CREATE SCHEMA <スキーマ名>;

SSMS での確認

データベース > システムデータベース > セキュリティ > スキーマ

● SQL Server で ログインとユーザーの作成

ログインの作成

CREATE LOGIN <ログイン名> WITH PASSWORD = <パスワード名>;

ユーザーの作成

CREATE USER <ユーザー名> FOR LOGIN <ログイン名> WITH DEFAULT_SCHEMA = <スキーマ名>;

SSMS での確認

データベース > システムデータベース > セキュリティ > ユーザー
No.1768
05/28 16:12

edit

SQL サーバーで複数のテーブルを削除する

● SQL サーバーでテーブル一覧を取得

select name from SYS.SYSOBJECTS 
WHERE xtype = 'U'
ORDER BY name;

(現在のスキーマ内のテーブル一覧が取得できます)

xtype には以下の種類があります。

AF = 集計関数 (CLR)
C = CHECK 制約
D = Default または DEFAULT 制約
F = FOREIGN KEY 制約
L = ログ
FN = スカラー関数
FS = アセンブリ (CLR) スカラー関数
FT = アセンブリ (CLR) テーブル値関数
IF = インラインテーブル関数
内部テーブル
P = ストアドプロシージャ
PC = アセンブリ (CLR) ストアドプロシージャ
PK = PRIMARY KEY 制約 (種類は K)
RF = レプリケーションフィルターストアドプロシージャ
S = システムテーブル
SN = シノニム
SQ = サービスキュー
TA = アセンブリ (CLR) DML トリガー
TF = テーブル関数
TR = SQL DML トリガー
TT = テーブル型
U = ユーザーテーブル
UQ = UNIQUE 制約 (種類は K)
V = ビュー
X = 拡張ストアド プロシージャ

https://docs.microsoft.com/ja-jp/sql/relational-databases/system-compatibility-views/sys-sysobjects-transact-sql?view=sql-server-ver15

● SQL サーバーでテーブルを削除

DROP TABLE (データベース名).(スキーマ名).(テーブル名);
DROP TABLE (データベース名).(テーブル名);
DROP TABLE (テーブル名);

データベース名やテーブル名にハイフンを含む場合は "" で囲みます。

No.1765
05/27 12:12

edit

SQLサーバのクライアント統計の見方

● SQLサーバのクライアント統計の見方

  クライアントの処理時間	3486		3483		3484.5000
  総実行時間					10472		10669		10570.5000
  サーバー応答の待機時間	6986		7186		7086.0000

ざっくりいうと
サーバー応答の待機時間 : クエリーの処理時間
クライアントの処理時間:結果セットを返すのに要した時間

「サーバー応答の待機時間」は、最後の要求パケットがクライアントを離れてから最初の応答パケットがサーバーから返されるまでの時間です。 「クライアント処理時間」は、最初の応答パケットと最後の応答パケットの間の時間です。ところで、私はこれらの主張を裏付けるドキュメントを見つけることができませんでしたが、私の観察に基づいて、それらは有効な教育的推測であると言います。

https://bit.ly/2WoueRT

No.1750
05/28 10:41

edit

SQLサーバの全テーブルに貼られているインデックス一覧を対象カラムとともに取得する

●SQLサーバのインデックス一覧を取得する

SELECT	S.name AS SchemaName,
	O.name AS ObjectName,
	I.name AS IndexName,
	I.type_desc AS IndexTypeDesc,
	I.is_primary_key AS IsPrimaryKey,
	I.is_unique AS IsUnique,
	I.is_disabled AS IsDisabled,
	STUFF((SELECT	',' + COL_NAME(IC.object_id, IC.column_id)
               FROM	sys.index_columns AS IC
	       WHERE	IC.is_included_column = 0
			AND IC.object_id = I.object_id
			AND IC.index_id = I.index_id
               ORDER BY IC.key_ordinal
               FOR XML PATH ('')), 1, 1, '') AS KeyColumns,
	STUFF((SELECT	',' + COL_NAME(IC.object_id, IC.column_id)
               FROM	sys.index_columns AS IC
	       WHERE	IC.is_included_column = 1
			AND IC.object_id = I.object_id
			AND IC.index_id = I.index_id
               ORDER BY IC.index_column_id
               FOR XML PATH ('')), 1, 1, '') AS IncludedColumns
FROM	sys.indexes AS I
	   INNER JOIN sys.objects AS O
	      ON I.object_id = O.object_id
	   INNER JOIN sys.schemas AS S
	      ON O.schema_id = S.schema_id
WHERE	I.index_id > 0
	AND O.is_ms_shipped = 0
ORDER BY S.name,
	 O.name,
	 I.name;

引用: https://bit.ly/3c5izfS

No.1749
05/01 13:54

edit

SQL Server 非クラスタ化インデックスの作成

● SQL Server 非クラスタ化インデックスの作成

最もシンプルな形は次のようになります。

CREATE NONCLUSTERED INDEX [【インデックス名】] ON [【テーブル名】]
(
	[【インデックス列名】]
)

● SQL Server 非クラスタ化インデックスの作成(複数インデックス)

複数のインデックスを貼る場合は次のように記述します最もシンプルな形は次のようになります。

CREATE NONCLUSTERED INDEX [【インデックス名】] ON [【テーブル名】]
(
	[【インデックス列名1】] , [【インデックス列名2】] , [【インデックス列名3】] 
) 
No.1748
05/01 09:36

edit

SSMS (マイクロソフト SQL Server Management Studio)でローカルDBへ接続する

1. コマンドプロンプトから sqllocaldb info を実行してローカルサーバ名を確認する

sqllocaldb info

結果例

MSSQLLocalDB

2. SSMS ( SQL Server Management Studio) (localdb)\ローカルサーバ名 で接続する

サーバーの種類 : データベースエンジン
サーバー名 : (localdb)\MSSQLLocalDB
認証 : Windows認証

添付ファイル1
No.1746
04/28 10:15

edit

添付ファイル

SQL Server の 実行計画を SSMS を使って調べる

● SQL Server の 実行計画を SSMS を使って調べる

1. 実際にSQL文を実行しながら調査する(グラフィカル)

SET STATISTICS XML ON を使用します。

SET STATISTICS XML ON
GO

/* ========== 調査したいSQL文 ↓  ========== */

SELECT * .............................................

/* ========== 調査したいSQL文 ↑  ========== */

GO
SET STATISTICS XML OFF

2. 実際にSQL文は実行せず、実行プランのみ取得する(グラフィカル)

SET SHOWPLAN_XML ON を使用します。

SET SHOWPLAN_XML ON
GO

/* ========== 調査したいSQL文 ↓  ========== */

SELECT * .............................................

/* ========== 調査したいSQL文 ↑  ========== */

GO
SET STATISTICS XML OFF

3. 実際にSQL文は実行せず、実行プランのみ取得する(テキスト)

SET SHOWPLAN_ALL ON を使用します。

SET SHOWPLAN_ALL ON
GO

/* ========== 調査したいSQL文 ↓  ========== */

SELECT * .............................................

/* ========== 調査したいSQL文 ↑  ========== */

GO
SET SHOWPLAN_ALL OFF
No.1741
04/23 16:41

edit

SQL Serverでクエリ実行時の参照インデックスを表示する

SET SHOWPLAN_TEXT ON;
GO
SET SHOWPLAN_ALL ON;
GO
SELECT * FROM YOUR_TABLE;
GO
SET SHOWPLAN_ALL OFF;
GO
SET SHOWPLAN_TEXT OFF;
GO

引用: https://bit.ly/2RAQ1mk

No.1737
04/14 09:47

edit

[SQLServer]作成したストアド・ファンクション・プロシージャの一覧を取得する

● [SQLServer]作成したストアド・ファンクション・プロシージャの一覧を取得する

select * from sys.objects
where
    type in ('FN', 'IF', 'P', 'TF', 'TR')
order by type, name
No.1736
04/14 09:36

edit