2017-10-25 1 views
0

Sybaseでは、テーブル、データ行、ページまたはテーブルロックのロックスキーマを指定できます。 以下は、SYBASEの例で、ロックテーブルを指定してテーブルを作成する方法です。 SQL Serverでテーブルに対してlocking -schema-を指定することはできますか?それともトランザクションに依存しますか?

create table dbo.EX_EMPLOYEE(
    TEXT varchar(1000) null 
) 
alter table EX_EMPLOYEE lock allpages 
go 

lock tables(SO answer)などがあるが、私は、テーブルのロックを指定することができますか?

私の質問:ロックのテーブルタイプを指定できますか?またはSQLサーバーでそれは異なっていますか?私は実行しているクエリに依存していますか?このlink

それは言う:

アンドレアスにはデフォルトのロック・レベルのロックが は、データベースで実行しようとしている操作に従ってとられていないがある指摘したように。ちょうど いくつかの例。特定の行の削除/更新の場合は排他的 その行でロックが行われます。選択操作の場合は共有ロック が変更されます。スキーマが変更された場合はすぐにロックが行われます などJeremyが指摘しているようにIsolation レベルを検索している場合は、コミットされて読み込まれます。

は正しいですか?私は、SybaseのロックテーブルはSQLサーバーと異なると言うことができますか?

+0

あなたは、その後何が起こるか、その上にOFFにあなたのテーブルのクラスタ化インデックスと設定されたインデックスのオプションALLOW_ROW_LOCKSとALLOW_PAGE_LOCKSを作成した場合は? (私は試していないので、答えはありません、ただのコメントです) – Arvo

+0

@Arvoしかし、私の質問はインデックスに関するものではなく、ロックのタイプを知るためにインデックスを持つ必要はありません – Moudiz

+0

@Moudiz - クラスタ化インデックスは、 - テーブルのクラスタード・インデックスはテーブルです。あなたはそれをClustered Tableと呼ぶことができます。 – Andrew

答えて

1

ロックメカニズムは同じではありませんが、SQL Serverでロックを制御する必要があります。たとえば、排他テーブルロックを使用するクエリでwith rowlock,with paglockまたはwith (tablockx)を指定できます。

あなたがコントロールしているすべてのロックと同様に、あなたが引き起こす可能性のあるブロックについては責任を負う必要がありますので、慎重に使用してください。完全な説明を

ドキュメント:https://docs.microsoft.com/en-us/sql/t-sql/queries/hints-transact-sql-table

+0

問合せではい私はロックのタイプを指定できますが(http://www.sqlteam.com/article/introduction-to-locking-in-sql-server)、ドキュメントには言及しませんテーブルがロックされている場合だから私の質問は、テーブルのロックはクエリではないので、私はあなたが理解しているように、テーブルにはロックがないのですか? – Moudiz

+0

ロックが必要なDDLまたはDMLのいずれの操作であっても、テーブルはロックされます。 – Andrew

+0

テーブルT1を更新している場合は、テーブルロックが正しく行われますか?私はそれを選択したり、別のセッションでそれを更新することはできません正しい?私はそれにヒントを追加した場合は、行のロックを右にすることができますか? – Moudiz

関連する問題