chata MCP (Microsoft Certified Professional)
GO TO TOP PAGE
練習問題
(70-028J Administering Microsoft SQL Server7.0)
index

※ ここではMCP試験の予想問題や出題された問題を公開しているわけではありません。
製品勉強にお役立ていただくことを目的としております。

きちんとした問題や解説を作っている余裕がありませんので、
試験直前に自分のために暗記したり確認したりするために作成した問題をそのまま掲載します。
そのため理解できない内容も一部あると思いますがお許しください。


### Self Questions                                                              ###
### 70-028: Administering Microsoft SQL Server 7.0                              ###
### 70-029: Designing and Implementing Databases with MicrosoftR SQL Server 7.0 ###
###                                                      H.Osanai 2002/02/12-21 ###


■setup.issファイルを作成する2つの方法は?

・セットアップを実行するとc:\mssql7\installフォルダにsetup.issが自動的に作成される。
・setupsql.exe k=Rc を実行すると、c:\winntフォルダにsetup.issが作成される。


■setup.issを使った自動インストールを実行するためのコマンドプロンプトは?

start R:\x86\setup\setupsql.exe -f "c:\setup.iss"


■セットアップ時に並べ替え順で選択可能はものは?

・辞書順 大文字小文字を区別しない
・辞書順 大文字小文字を区別する
・バイナリ順


■Windows 98にSQL Serverをセットアップした場合に利用可能なNet-Libraryは?

・共有メモリ
・TCP/IP
・マルチプロトコル


■Windows NTにSQL Serverをセットアップした場合に利用可能なNet-Libraryは?

・名前付きパイプ
・TCP/IP
・マルチプロトコル


■クライアントのNet-Libraryのデフォルトは?

・名前付きパイプ


■Net-Libraryの種類をすべてあげよ(7つ)

・名前付きパイプ (NTサーバーのみ)
・TCP/IP
・マルチプロトコル
・共有メモリ (Win95/98クライアント、サーバーのみ)
・NWLink IPX/SPX
・AppleTalk
・Banyan VINES


■SQLクライアント接続ユーティリティをクライアントマシンにセットアップする方法は?

・sql70cli.batを実行する。


■暗号化をサポートするNet-Libraryは?またその設定方法は?

・マルチプロトコル
・サーバーネットワークユーティリティで[マルチプロトコル暗号化を有効にする]にチェックをつける


■Windows NT認証をサポートするNet-Libraryは?

・名前付きパイプ
・TCP/IP
・マルチプロトコル


■ANSI null default オプションとは?またその設定方法は?

・新しい列でNULL値を許容するか設定する。(デフォルト:off)
  ANSI標準は、NULL
  SQLServer標準は、NOT NULL
・[DBのプロパティ]にある[ANSI NULL既定値]
・sp_dboption 'DB名', 'ANSI null default', 'true'


■ANSI_NULLSオプションとは?

・NULL値との比較を制御(デフォルト:off)


■ANSI_NULLSオプションがonの場合のNULLの比較結果は?

・UNKNOWNを返すため、結果はNULLになる  


■ANSI_NULLSオプションがoffの場合のNULLの比較結果は?

・TRUEまたはFALSE


■ANSI_NULLSオプションを設定する方法は?

・sp_dboption 'DB名', 'ANSI nulls', 'true'
※DBごとに設定する


■データベース作成のT-SQL文

create database hiroshi
on
primary (name=hiroshi_data,
	filename='c:\mssql7\data\hiroshi_data.mdf',
	size=1MB,
	maxsize=10,
	filegrowth=10%)
log on
	(name=hiroshi_log,
	filename='c:\mssql7\data\hiroshi_log.ldf')


■DBのデータファイルのサイズを変更するT-SQL文 (注意事項も)

alter database hiroshi1
modify file(name=h1_data,
	size=2mb)

※一度に 1 つのファイルと 1 つのプロパティだけ変更可能。


■DBにデータファイルを追加するT-SQL文

alter database hiroshi1
add file(name=h1_data2,
	filename='d:\mssql7\data\h1_data2.2df')


■DBからデータファイルを削除するT-SQL文

alter database hiroshi1
remove file h1_data2


■DB縮小のT-SQL文(オプション含む)

dbcc shrinkdatabase(DB名,%,オプション)
オプションなし	■■__
NOTRUNCATE	■■□□
TRUNCATEONLY	■□■_


■データファイル縮小のT-SQL文(オプション含む)

dbcc shirinkfile(ファイル名,MB,オプション)
EMPTYFILE	ファイルを空にする。削除しない。
NOTRUNCATE
TRUNCATEONLY


■ASCIIテキストファイルのデータをSQL Serverのテーブルに一括で移行するために使うユーティリティは?

・bcp
・BULK INSERT
・MS DTC


■SQL Serverのテーブルから他のDBにデータをコピーしたい。ファイルにエクスポートするために使うユーティリティは?

・bcp
・MS DTC


■TABLOCKとは?また、TABLOCKを使用できるステートメントは?

ロックヒント。テーブルレベルのロック。
SELECT、INSERT、UPDATE、DELETEで使用できる。


■テーブルに排他ロックをかけてデータを挿入したい。T-SQL文は?

insert into hiroshi (c1,c2,c3) WITH TABLOCKX
values ('aaa','bbb','ccc')


■トランザクションログを記録しない設定方法は(2つ)?

・trunc. log on chkpt をonにする
・[DBのプロパティ]で[チェックポイント時のログの切り捨て]をonにする


■バックアップデバイスの論理名を指定するsp文は(3つのデバイス)?

USE master
EXEC sp_addumpdevice 'disk', '論理名', 'c:\dump\dump1.bak'
  
USE master
EXEC sp_addumpdevice 'disk', '論理名', '\\servername\sharename\path\filename.ext'

USE master
EXEC sp_addumpdevice 'tape', '論理名', '\\.\tape0'


■テープにバックアップします。テープドライブのラベルを読み取らず、終了時に巻き戻すように行いたい。T-SQL文は?

backup database hiroshi to tape= '\\.\tape0'
	WITH init, format, skip, unload,
	name= 'Full Backup of MyNwind'


■差分バックアップのT-SQL文は?

backup database hiroshi to disk= 'c:\dump\dump2.bak'
	WITH DIFFERENTIAL, noformat, noinit,
	name= 'xxxxx'


■トランザクションログのバックアップのT-SQL文は?

backup log hiroshi to 論理名
	WITH noinit, noformat,
	name= 'xxxxx'


■ファイルグループのバックアップのT-SQL文は?(特徴は)

backup database hiroshi FILEGROUP='PRIMARY' to 論理名

※DBのバックアップより高速


■バックアップ中に実行できない操作は?

・DBの作成、削除、縮小
・インデックスの作成(トランザクションログバックアップは可能)
・ログに記録されない操作(SELECT INTO、WRITETEXT、UPDATETEXTなど)


■リストアのT-SQL文
●−−□−−□−−◎−−□−−□−x−◎
Full  Log1  Log2  Dif1  Log3  Log4   Dif2

backup log hiroshi to Logx with NO_TRUNCATE
restore database hiroshi from Full with NORECOVERY
restore database hiroshi from Dif1 with NORECOVERY
restore log hiroshi from Log3 with NORECOVERY
restore log hiroshi from Log4 with NORECOVERY
restore log hiroshi from Logx with RECOVERY


■スタンバイサーバーでバックアップ(FullとLogx)をリストアするT-SQL

restore database hiroshi from Full with STANDBY = 'c:\undo.ldf'
restore log hiroshi from Logx with  STANDBY = 'c:\undo.ldf'
restore database hiroshi with RECOVERY


■レプリケーションエージェントの種類を挙げよ。

・スナップショットエージェント
・ログリーダーエージェント
・ディストリビューションエージェント
・マージエージェント


■それぞれのレプリケーションエージェントはどこで動作するか。

・スナップショットエージェント		ディストリビュータ
・ログリーダーエージェント		ディストリビュータ

  (プル サブスクリプション)
・ディストリビューションエージェント	サブスクライバ
・マージエージェント			サブスクライバ

  (プッシュ サブスクリプション)	
・ディストリビューションエージェント	ディストリビュータ
・マージエージェント			パブリッシャ


■ネットワークを流れるデータ量が少ないレプリケーションは?

トランザクションレプリケーション
※スナップショットレプリケーションは全データを送信する。


■トランザクションレプリケーションで動作するエージェントと、一連の動作は?

ログリーダーエージェントが変更内容を監視し、ディストリビューションデータベースに格納し、
ディストリビューションエージェントがそのデータをサブスクライバに送信する。


■即時更新サブスクライバの機能と、必要な列は?

・2フェーズコミット。
・timestamp列が必要。


■マージレプリケーションで優先度が高いのは?

・パブリッシャ (サブスクライバは優先度が低い)
・同じ優先度の場合は、先にパブリッシャに送信された方


■NOT FOR REPLICATIONオプションが設定可能な列は?

・IDENTITY 
・CHECK
・トリガー
※列のプロパティで[レプリケーションに対する制約を有効にする]をoffにする


■匿名サブスクリプションとは?

・特殊なタイプのプル サブスクリプション
  通常、各サブスクライバに関する情報がパブリッシャ側に記録され、
  各サブスクライバのパフォーマンスに関する情報がディストリビュータ側に保管されます。
  匿名サブスクリプションでは詳細情報が記録されません。

・サブスクライバが多数になる場合や、追加情報を保守するオーバーヘッドが望ましくない場合に
  匿名サブスクリプションを許可する。

・匿名サブスクリプションは、パブリッシャでなくサブスクライバが作成する必要がある。


■SQLサーバーでのメール設定は?

・SQLServerAgentにドメインアカウントを割り当てる。
・ドメインアカウントのメールプロファイルを作成する。
・メールプロファイルをSQLAgentMailに割り当てる。


■SQLMailがメールを送信するために利用するspは?

・xp_sendmail 拡張ストアドプロシージャ


■ジョブステップが正常に動作したか確認するためのテーブルとそのDBは?

・sysjobhistory (msdb)


■ジョブの情報を保持しているテーブルは?

・sysjobs (msdb)


■ジョブ内の各ステップの情報を保持しているテーブルは?

・sysjobsteps (msdb)


■オペレーターの情報を保持しているテーブルは?

・sysoperators (msdb)


■ジョブのスケジュール情報を保持しているテーブルは?

・sysjobschedules (msdb)


■T-SQL文のジョブの場合、どの権限で実行されるか?

・ジョブの所有者


■OSのコマンドやスクリプト言語のジョブの場合、どの権限で実行されるか?

・所有者がsysadminロールのメンバ:SQLServerAgentサービスのアカウント
・所有者が上記以外のメンバ:SQLAgentCmdExecアカウント


■SQL Serverが警告を発行するしくみは?

1) 重大度レベル19以上の sysmessage エラーが発生。
2) SQLServerが、WindowsNTのアプリケーションログにイベントを書き込む。
3) SQLServerAgentが、イベントを読み取る。
4) 定義されている警告と等しい場合、警告を発行する。


■重大度レベルが19未満の sysmessage エラーをアプリケーションログに書き込むにはどうしたらいいか?

sp_altermessage を使う


■ユーザー定義のエラーメッセージを追加するには?また、その場合の注意点は?

・sp_addmessage を使う
・エラー番号を50,000より大きくすること


■ユーザー定義のエラーメッセージをアプリケーションログに書き込むようにするには?

・RAISERROR ('message', 重大度レベル, 1) WITH LOG
・EXEC xp_logevent 60000, @@MESSAGE, informational
  ※INFORMATIONAL、WARNING、または ERROR 


■NULLを許すのは PRIMARY KEY制約 と UNIQUE制約 のどちらか。

・UNIQUE制約 (NULLは1レコードだけ)


■インデックスが自動的に作成される制約は?

・PRIMARY KEY	重複を許さないクラスタ化インデックス
・UNIQUE	重複を許さないインデックス


■PRIMARY KEY制約 と UNIQUE制約、それぞれテーブルに定義できる数は?

・PRIMARY KEY	テーブルに1つだけ
・UNIQUE	テーブルに複数定義できる


■テーブル間の参照整合性を維持するために、FOREIGN KEY が使えないのはどのような時か?その場合の対処方法は?

・2つのテーブルにおいて連鎖削除、連鎖更新が必要な場合。
・FOREING KEYを使わず、トリガーやストアドプロシージャを使う。


■[販売価格]列の値を、同じテーブルにある[仕入価格]列の1.2倍であることを保証したい。どの制約を定義すればよいか。

・CHECK制約
  CHECK制約は同じテーブルの他の列を参照できる。他のテーブルは参照できない。
  ルールは他の列を参照できない。


■1つの列に複数定義できる制約は?

・CHECK制約


■他のテーブルにある列の値と比較したい。どうしたらよいか。

・トリガー、またはspを使う。


■ルールがバインドできるオブジェクトは?

・列
・ユーザー定義データ型


■ユーザー定義データ型にDEFAULT制約を追加したい。既にそのユーザー定義データ型をバインドしている列がありますが、今後バインドする列に対してだけ有効にしたい。ステートメントは?

・sp_bindefault 制約名, 'ユーザー定義データ型名', 'futureonly'
  futureonlyオプション:新しくユーザー定義データ型を使って定義する列にのみ、有効にする。


■ユーザー定義データ型にバインドできないシステム提供のデータ型は?

timestamp


■既にルールがバインドされているユーザー定義データ型に、新しいルールをバインドした場合の動作は?

古い関連付けは自動的に削除される


■既存の2つのテーブル間で、外部キー制約を追加したい。既存のデータに対しては制約違反になるかどうか確認したくない。T-SQL文は?

alter table 明細
	add constraint 制約名 FOREIGN KEY 列名
	references 売上テーブル(列名)
	WITH NOCHECK

※WITH NOCHECKは、FOREIGN KEYとCHECKに対してだけ使える。
  PRIMARY KEY、UNIQUEには使えない。


■既存のテーブルの列にルールを新たにバインドした。ルールが適用されるのはいつ?

バインド後に追加/更新されたデータのみ。既存のデータには適用されない。


■smallintデータ型の範囲は?

±3.2万


■smallmoneyデータ型の範囲は?

±21万


■datetimeとsmalldatetimeの違いは?

datetime:年月日時分秒.ミリ秒
smalldatetime:年月日時分まで


■列で番号を自動生成させるには?

IDENTITY(int,1,1)
※一意な値は保証しない。


■テーブル名や列名を変更するステートメントは?

sp_rename


■sp_helpdbとは?

DBの一覧やファイルの割り当てについての情報を表示する


■sp_helpとは?

DB内のオブジェクト情報


■sp_helptext

spやビューを作成した時のステートメント


■一時テーブルを定義する時に記述できない制約は?

FOREIGN KEY


■ローカル一時テーブルの作成方法は(2つ)?

・create table #テーブル名
・SELECT c1,c2,c3 INTO #テーブル名 from テーブル名


■クラスタ化インデックスの選定理由は(4つ)?

・選択範囲に使われる列
・グループ化に使われる列
・結合に使われる列(外部キー列)
・順次アクセスによく使われる列


■非クラスタ化インデックスの選定理由は(1つ)?

・完全一致クエリーによく使われる列
他にもある


■インデックスのフラグメント化が発生している。最もパフォーマンスよく解消する方法は(T-SQL文)?

create index インデックス名 on テーブル名(列名)
with DROP_EXISTING

※既存のインデックスを削除せずに再構築する


■テーブルのすべてのインデックスを一度に再構築するステートメントは?

DBCC DBREINDEX (テーブル名)


■FILLFACTORとPADINDEXのそれぞれの役割は?

・FILLFACTOR: リーフレベルの充填率を指定
・PADINDEX: 非リーフレベルの充填率を指定


■クエリ オプティマイザは何を使用して、クエリに対してインデックスを使用する場合のコストを予測するか?

統計情報


■SQL Server プロファイラを使用して何を監視することによって、統計情報がないことがわかるか?

Missing Column Statistics イベント クラス


■指定の列やインデックスの統計を保持しないようにするための設定方法は?

・sp_autostats テーブル名, 'OFF'
・CREATE INDEX インデックス名 on テーブル名 WITH STATISTICS_NORECOMPUTE
  統計値を自動的に更新する設定に戻すには、「UPDATE STATISTICS テーブル名」を実行
・UPDATE STATISTICS テーブル名 WITH NORECOMPUTE
・CREATE STATISTICS 統計情報名 on テーブル名 WITH NORECOMPUTE
・sp_dboption を使用して auto create statistics および auto update statistics データベース オプションを FALSE


■すべての列に対して統計情報を作成したい。使用するspは?

sp_createstats


■ビュー定義に含めることができないものは(全て)?

・ORDER BY
・COMPUTE
・COMPUTE BY
・INTO
・一時テーブル


■ビューを使ったレコードの追加/更新がビューの条件を満たすようにするには?

WITH CHECK OPTION をつけてcreate viewを実行する。


■spで参照しているオブジェクトの存在確認はいつ行うか?

・spが最初に実行される時
・再コンパイル時


■spを実行する度にコンパイルするには?

・WITH RECOMPILE をつけてcreate procedureを実行する。


■spを実行時にコンパイルするには?

EXEC プロシージャ名 WITH RECOMPILE


■次回実行時にコンパイルさせるには?

EXEC SP_RECOMPILE テーブル名

※指定したテーブルを使用する全てのspが実行されたときにコンパイルする。


■spまたはバッチを無条件で終了させるステートメントは?

RETURN


■トリガのステートメントで使用される特別なテーブルは?また、その働きは?

・inserted テーブル: INSERT、UPDATEの新しいデータ、
・deleted テーブル: DELETE、UPDATEによって影響を受ける前のデータ

トリガー実行 |→[inserted]
             |[テーブル] → [deleted]


■Microsoft Searchサービスが動作可能なOSは?

Windows NT Serverのみ


■フルテキストインデックスを作成する方法は?

・フルテキストインデックス作成ウィザード
・sp_fulltext_database	DBにフルテキストインデックスの作成を有効(無効)にする
  sp_fulltext_catalog	カタログの作成(削除)
  sp_fulltext_table	テーブルにフルテキストインデックスの作成を有効(無効)にする
  sp_fulltext_column	列をフルテキストインデックスに加える


■フルテキストカタログとフルテキストインデックスの関係と制限は?

・DBは、複数のフルテキストカタログをもてる。
・フルテキストカタログは、複数のフルテキストインデックスをもてる。
・フルテキストインデックスは、テーブルに1つしか作成できない。


■フルテキストインデックスの再作成を行う2つのステートメントとその違いは?

・sp_fulltext_catalog を start_full で実行
  カタログ全てのフルテキストインデックスを再作成する

・sp_fulltext_catalog を start_incremental で実行
  追加/更新のあった行だけ再作成する。ただし、timestamp列が必要。


■フルテキストインデックスを自動的に保守する方法は?

再作成をジョブで設定する


■IDENTITYプロパティが設定されている列は、列名以外に参照できるか?

IDENTITYCOLキーワードで参照できる。

※ROWGUIDプロパティが設定されている列は、ROWGUIDCOLキーワードで参照できる。


■select into を実行する前の条件 (NULLの扱いは?)

・テーブルは事前に定義してはいけない。
  (select intoはテーブルを作成してレコードを出力する)
・select into/bulkcopyオプションをonにしておく。
  (一時テーブルではなく、常設テーブルに作成する場合)


■count(*)は、NULLを集計できるか?

できる


■ROLLUPとCUBEの違いは?

・ROLLUP:選択された列の値の階層集計を示す結果セットが返されます。 
・CUBE:選択された列の値のすべての組み合わせの集計を示す結果セットが生成されます。 

  ※両方とも GROUP BY句 と一緒に使われる。


■カーソルの種類とそれぞれの特徴は?

・動的カーソル (センシティブカーソル)
  スクロールする度に変更が反映される。
  リソースを多く消費する。

・静的カーソル (インセンシティブカーソル)
  結果セットをtempdbに作成する。

・キーセットドリブンカーソル
  結果セットのキー値(キーセット)をtempdbに作成する。


■@@FETCH_STATUSとは?

オープンされたカーソルで、データを取得できたかどうかを表す。
 0:成功
-1:失敗
-2:他のユーザーによりその行が削除された


■ステートメント実行時に、自動的にトランザクションが開始されるようにするには?

IMPLICIT_TRANSACTION をonにする(デフォルト:off)

※ステートメントの後に、明示的に COMMIT TRANSACTION を実行しないと、ロールバックされる。
※トランザクションが実行されるステートメント
  SELECT, INSERT, UPDATE, DELETE,
  DROP, TRUNCATE TABLE,
  ALTER TABLE, CREATE,
  OPEN, FETCH,
  GRANT, REVOKE


■トランザクションを途中で終了するステートメントは?

begin tran hiroshi
  if .........
    rollback tran

  IF @@TRANCOUNT=0
    GOTO out_tran

  update ........

  commit tran

out_tran:


■トランザクション中でエラーが発生した場合に、ロールバックしてトランザクションを終了させるには(ステートメント)?

SET XACT_ABORT on を設定する


■SQL Serverはデフォルトで読み取り中のデータにかけるロックは?

共有ロック


■SQL Serverはデフォルトで更新中のデータにかけるロックは?

排他ロック


■共有ロックとは?

・データを変更や更新しない読み取り専用の処理で使用する
・ほかのトランザクションは、リソースに共有ロックがかけられている間はデータを変更できない


■排他ロックとは?

・UPDATE、INSERT、DELETE などのデータ変更の処理で使用します。
・ほかのトランザクションが読み取ったり、変更することはできません


■トランザクション分離レベルは?

・READ UNCOMMITTED 
  共有ロックは実行されず、排他ロックも使用されない。
  トランザクションが終了する前にデータ内の値を変更でき、行がデータ セットに現れたり消えたりします。
  NOLOCK を設定するのと同じ効果がある。

・READ COMMITTED
  SQL Server の既定値。
  共有ロックが保持されるように指定する。
  しかし、トランザクションが終了する前にデータを変更することができる。

・REPEATABLE READ 
  ほかのユーザーはデータを更新できない。

・SERIALIZABLE 
  トランザクションが完了するまで、ほかのユーザーはデータ セットに行を挿入したり、更新することができない。
  HOLDLOCKと同じ効果。


■トランザクション分離レベルのステートメントは?

SET TRANSACTION ISOLATION LEVEL serializable


■selectステートメントの結果から重複する行を除去するには?

select DISTINCT c1 from hirohsi
※NULLも重複値とみなす。


■insertステートメントでvalues句内に指定できるものは?

DEFAULT:デフォルトが設定されている列
        NULLが許可されている列
        timestamp列


■DEFAULT VALUESキーワードの使い方は?

insert into hiroshi DEFAULT VALUES
※全ての列がデフォルト値、NULL許可、timestampの場合に使用可能


■テーブル内の全てのレコードを一括で削除するT-SQL文は(2つとポイント)?

・DELETE from hiroshi
・TRUNCATE TABLE hiroshi
  ※トランザクションログに記録しない


■1分待ったらトランザクションを中止したい。ステートメントは?

・XACT_ABORT を設定する方法
  SET LOCK_TIMEOUT 60000
  SET XACT_ABORT ON

・@@ERRORが1222か調べて中止する方法
  SET LOCK_TIMEOUT 60000
  begin tran hiroshi
    if @@ERROR = 1222
       goto out_tran:
         :
  out_tran:
    rollback tran


■リンクサーバーを定義するステートメントは?

sp_addlinkedserver 'リモートサーバー名', '製品名'


■分散クエリーを無効にするサーバーオプションは?

sp_serveroption 'リンクサーバー名', 'data access', 'false'
※sp_serveroption: リモートサーバーやリンクサーバーを設定する。
  data access: 分散クエリーを有効/無効にする。


■ローカルサーバーとリンクサーバーのログインマッピングのステートメントは(全ローカルユーザーを許可する場合も)?

sp_addlinkedsrvlogin 'リンクサーバー名', 'ローカルログイン名', 'リモートログイン名', 'パスワード'

sp_addlinkedsrvlogin 'リンクサーバー名', 'NULL', 'リモートログイン名', 'パスワード'
  ---ローカルログイン名をNULLにすると、全てのローカルユーザーがリンクサーバーにログインできる。


■一時的にしか使わないデータソースに対して、分散クエリーを実行したい場合に使う関数は?

OPENROWSET関数


■リンクサーバーに対して実行可能なステートメントは?

select, insert, update, delete
※create, dropはダメ。リンクサーバーに対してテーブルを作ってはダメ。


■リンクサーバーのオブジェクトを参照するときの注意点は?

サーバー名. カタログ名(DB名). スキーマ名(所有者名). オブジェクト名 で指定すること。


■リンクサーバーに対して、オプティマイザを使用せずに分散クエリーを実行したい。どうしたらよいか。

パススルークエリーを実行する。
・OPENROWSET(アドホック)
・OPENQUERY(リンクエリー)


■分散トランザクションを実行するステートメントと、実行可能なステートメントは?

begin DESTRIBUTED transaction
  - リモートストアドプロシージャ
  - 分散クエリー
commit transaction -- MS DTCが2フェーズコミットを実行

※ MS DTCは、分散トランザクションを開始するサーバーにインストールされている必要がある。
※ XACT_ABORT をonにしておくこと。


■固定サーバーロール全てと役割をあげよ(7つ)

・sysadmin

・serveradmin
  サーバー全体にわたる環境設定オプションの設定。サーバーのシャットダウン。

・setupadmin
  リンクサーバーと起動プロシージャ管理

・securityadmin
  ログインとcreate database権限の管理。エラーログの読み取り

・processadmin
  プロセスの管理

・diskadmin
  ディスクファイルの管理

・dbcreater
  DBの作成と変更


■固定データベースロール全てと役割をあげよ(10)

・db_owner
  DBの全ての権限をもつ。DBの所有者ではない。

・db_acessadmin
  ユーザーの追加と削除

・db_securityadmin
  権限、所有権の管理

・db_ddladmin
  オブジェクトの作成、変更、削除

・db_backupoperator
  DBCC、CHECKPOINT、BACKUPの実行

・db_datareader
  全てのユーザーテーブルを読み取り。

・db_datawriter
  全てのユーザーテーブルのデータ変更。

・db_denydatareader
  全てのユーザーテーブルを読み取りを不能にする。

・db_denydatawriter
  全てのユーザーテーブルのデータ変更を不能にする。

・public
  全ユーザーが所属するグループ


■ユーザー定義データベースロールにsysadminを追加することはできるか?

できない。
ユーザー定義データベースロールに、固定サーバーロールや固定データベースロールは追加できない。


■hiroshiドメインのAdministratorsグループにSQL Serverへのログイン権限を与える場合のユーザー名の指定方法は?

BUILTIN\Administrators

※Windows NT の組み込みローカル グループ Administrators にアクセス権を与えるには、HIROSHI\Administrators はダメ。


■hiroshiドメインの全てのユーザーにSQL Serverへのログイン権限を与える場合のユーザー名の指定方法は?

BUILTIN\Users


■ドメインのユーザーがWindows認証を使って、SQL Serverへの接続許可を与えるステートメントは?

sp_grantlogin 'ドメイン名\アカウント名'


■SQL Server認証のSQL Serverログインの作成に使うspは?また、指定可能なものは?

sp_addlogin

※ログイン名、パスワード、デフォルトデータベース、デフォルト言語が指定可能。


■DBへの接続許可を与えるステートメントは?

sp_grantdbaccess

※sp_addloginでデフォルトDBを設定してもDBへアクセスできない。
  sp_grantdbaccessで接続許可を与える必要がある。


■デフォルトデータベースを変更するステートメントは?

sp_defaultdb


■guestユーザーアカウントについて

・hiroshi DBユーザーにguestを追加すると
  - - - hiroshi DBユーザーに登録されていないログインがhiroshi DBに接続できるようになる。
  - - - 接続できるだけなので、別にDBへのselect権限などを設定する必要がある。
  - - - だからといって、guestユーザーでSQL Serverにログインできるようにはならない。


■サーバーロールやDBロールに含められるロールは?

×) 固定サーバーロール  → 固定サーバーロール	は追加できない。
×) 固定DBロール        → 固定DBロール
×) 固定DBロール        → ユーザー定義DBロール

○) ユーザー定義DBロール → 固定DBロール
○) ユーザー定義DBロール → ユーザー定義DBロール


■DBロールを作成するステートメントは?

sp_addrole


■DBロールにユーザーを追加するステートメントは?

sp_addrolemember


■アプリケーションロールを作成するステートメントは?(注意事項も)

sp_addapprole
※DBごとに作成する。


■アプリケーションロールを有効にするステートメントは?(注意事項も)

sp_setapprole
※有効範囲はDB内のみで、接続が切れるまで有効。
  DBの変更はできない。


■接続中にユーザーを変更するステートメントは?

SETUSER 'ユーザー名'


■アプリケーションロールを使うことができるユーザーは?

アプリケーションロール名とそのパスワードを知っているユーザーは誰でも使える。
EXEC sp_setapprole 'アプリケーションロール名', 'パスワード'


■GRANTステートメントの種類とステートメントは?

・ステートメント権限
  create database, create table, create view, create proc, create default, create rule, 
  backup database, backup log

  GRANT create database, create table TO セキュリティアカウント名,セキュリティアカウント名・・・

・オブジェクト権限
  select, insert, update, delete, execute, references

  GRANT select, insert, update ON hiroshi TO セキュリティアカウント名,セキュリティアカウント名・・・


■セキュリティアカウントに対して、指定したオブジェクト権限をほかのセキュリティアカウントに与えることができる権限を与えるには?(注意事項も)

WITH GRANT OPTION をつけて GRANTステートメントを実行する。
※オブジェクト権限にだけ使用可能。


■既に与えられている権限や取り消されている権限をユーザーから削除するステートメントは?

REVOKE select ON table名 TO|FROM セキュリティアカウント名


■WITH GRANT OPTION を取り消すステートメントは?(注意事項も)

REVOKE GRANT OPTION FOR select ON table名 FROM セキュリティアカウント名 CASCADE
※CASCADEをつけるときは、GRANT OPTION FOR は必須。
・セキュリティアカウントのselect権限は残ったまま。
・セキュリティアカウントが他のユーザーにselect権限を付与することはできなくなる。
・セキュリティアカウントが他のユーザーに付与したselect権限はなくなる。


■テーブルを作成した場合、所有者がdboとなるのは、どのアカウントか?
dbo、sysadmin
db_ownerが作成したテーブルは、そのアカウントが所有者となる。


■現在のテーブルサイズを調べるステートメントは?

sp_spaceused テーブル名


■領域使用状況レポートを修正するステートメントは?(2つ)

・sp_spaceused テーブル名 TRUE
・DBCC UPDATEUSAGE DB名|テーブル名


■トランザクションログ領域の使用状況を調べるステートメントは?

DBCC SQLPERF (LOGSPACE)
※Log Size, Log Space Used(%) が確認できる


■テーブルの断片化を調べるステートメントは?確認する値は?

DBCC SHOWCONTIG テーブルID
※テーブルやインデックスの断片化を調べられる
  スキャン密度を確認する。


■CPUが入出力要求など、カーネルコマンドに費やしている時間の割合を調べるには?

Processor: % Privileged Time


■CPUがアプリケーションの処理に費やしている時間の割合を調べるには?

Processor: % User Time


■CPUがディスク入出力に多くのCPU時間を割いているか調べるには?

Processor: % Privileged Time と Physical Disk が高いかどうか確認する。


■SQL Serverによるページングを調べるには?

Process: Page Fault/sec の sqlservr インスタンスを確認する。


■SQL ServerにCPU時間とキャッシュヒット率の管理を行わないようにするには?

SQL Serverの起動オブションに-xをつける
※パフォーマンスは最大になる。


■1秒あたりのプロセッサ内で発生したページフォルトの回数を表すカウンタは?

Memory: Page faults/sec


■SQL Serverプロファイラのデータ列の読み取り数(Reads)とは?

イベントの結果としてサーバーが実行した物理ディスクの読み取り数


■SQL Serverプロファイラのトレースログを、リモートSQL Serverのテーブルに保存するには?

xp_trace_setqueuedestination


■重大度レベル 17 以上の例外が発生したらイベントをトレースするには?

xp_trace_setqueryhistory 1
※\Mssql7\Log ディレクトリの Blackbox.trc というファイルにクエリ ヒストリが書き込まれます。


■診断情報とクエリ ヒストリ トレースの内容を収集するには?

sqldiag
※コマンドプロンプトで実行
※診断情報と (実行中であれば) クエリ ヒストリ トレースの内容を収集し、\Mssql7\Log\Sqldiag.txt および \Mssql7\Log\Sqldiag.trc に格納します。


■クエリーオプティマイザに使用するインデックスを指定するには?

インデックスヒントを使う

  クラスタ化  |                インデックスヒント
インデックス  |       INDEX(0)         |          INDEX(1)
-----------------------------------------------------------------------
  あ    り    | インデックスのスキャン | インデックスのスキャン/シーク
  な    し    | テーブルのスキャン     | エラー


■インデックスチューニングウィザードで必要なワークロードは?

RPC:Starting、SQL:BatchStarting または、
Rpc:Completed、SQL:BatchCompleted


■どのような場合に実行プランの再利用が行われるか?

・ストアドプロシージャ
・オブジェクト名が完全修飾で表現されている場合。


■SQL Server用のメモリをディスクにスワップさせないためには?

set working set size を 1 にする。
WindowsNTが物理メモリをSQL Server用に予約する。
SQL Serverのパフォーマンスを重視したい場合に指定する。
(デフォルトは 0 :無効)


■多数のクライアントがサーバーに接続されている場合のパフォーマンスを最適にするには?

sp_configure で max worker threads を設定する。
・接続ごとにスレッドを使用すると、多量のシステム リソースを使用することになる。
・多量のクライアント接続を処理するワーカー スレッド プールを作成するとパフォーマンスが向上する。


■masterデータベースのトランザクションログのバックアップ方法は?

方法はない。masterデータベースはフルバックアップしかできない。


■SQL Serverをシングルユーザーモードで起動するには?

 -mオプションを付けて起動


■SQL Serverを最小設定で起動するには?

  -fオプションを付けて起動


■リンクサーバーの管理ができる固定サーバーロールは?

setupadmin


-------------------------------------------
BACKUPとRESTOREステートメントは確認しておくこと
-------------------------------------------

! NOTICE !

since 1999/02/01
HomePage Address http://www.osanai.co.jp/hiroshi/

(C)Copyright 1998 Hiroshi Osanai. All rights reserved.