タグ付けされた質問 「sql-server」

Microsoft SQL Serverのすべてのバージョン(MySQL以外)。sql-server-2016のようなバージョン固有のタグも追加してください。これは、質問に関連することが多いためです。

4
1つの列を読み取り専用にすることは可能ですか?
絶対に変更できない列を持つテーブルを作成することは可能ですが、テーブルの他の列は可能です。 たとえば、CreatedByUser変更しないカラムを想像できます。 このためにSQL Serverに組み込みの機能がありますか、それともトリガーなどを介してのみ可能ですか?
25 sql-server 

1
ライブprodテーブルのvarcharの長さを変更する
現在、実稼働アプリで使用されているMS SQL Server 2008 R2 DBサーバーがあります。 アプリの新しい拡張機能varchar(100)では、テーブルの列の長さを増やす必要があります。 現在のデータに影響を与えずに、prod DBのこの既存の列の長さを増やすことはできますか? サービスの中断を避けるために、この変更は営業時間外に完了する必要がありますか?

2
列をNOT NULLからNULLに変更する-内部で何が起こっているのでしょうか?
2.3B行のテーブルがあります。列をNOT NULLからNULLに変更したいと思います。列は1つのインデックスに含まれます(クラスター化インデックスまたはPKインデックスではありません)。データ型は変更されていません(INTです)。ただnullability。ステートメントは次のとおりです。 Alter Table dbo.Workflow Alter Column LineId Int NULL 操作は、停止する前に10を超えます(ブロッキング操作であり、時間がかかりすぎたため、完了まで実行することすらまだできていません)。テーブルを開発サーバーにコピーして、実際にかかる時間をテストします。しかし、NOT NULLからNULLに変換する際にSQL Serverが内部で何をしているのかを誰かが知っているのか興味がありますか?また、影響を受けるインデックスを再構築する必要がありますか?生成されたクエリプランは、何が起こっているのかを示していません。 問題のテーブルはクラスター化されています(ヒープではありません)。

3
SELECT-UPDATEパターンを使用する場合の同時実行性の管理
次のコードがあるとしましょう(ひどいことは無視してください): BEGIN TRAN; DECLARE @id int SELECT @id = id + 1 FROM TableA; UPDATE TableA SET id = @id; --TableA must have only one row, apparently! COMMIT TRAN; -- @id is returned to the client or used somewhere else 私の目には、これは並行性を適切に管理していません。トランザクションがあるからといって、更新ステートメントに到達する前に他の誰かがあなたと同じ値を読み取らないということにはなりません。 今、コードをそのままにしておきます(これは単一のステートメントとして処理するか、自動インクリメント/ ID列を使用することをお勧めします)並行性を適切に処理し、2つのクライアントが同じになる競合状態を防ぐ確実な方法id値? WITH (UPDLOCK, HOLDLOCK)SELECTにa を追加するとうまくいくと確信しています。SERIALIZABLEトランザクション分離レベルは、(それは誰にもTRANが終わるまで、あなたが何をしたか読むことを拒否したことから、同様の作業に思えるでしょうUPDATE:これは偽であることがわかりマーティンの答え)。本当?どちらも同等に機能しますか?一方が他方よりも優先されますか? IDの更新よりも正当なもの、つまり更新が必要な読み取りに基づいた計算を行うことを想像してください。多数のテーブルが関係している可能性がありますが、そのうちのいくつかは書き込みを行い、他のテーブルは書き込みを行いません。ここでのベストプラクティスは何ですか? この質問を書いた後、必要なテーブルのみをロックしているので、ロックヒントの方が優れていると思いますが、誰かの入力に感謝します。 PSそして、いいえ、私は最良の答えを知りません、そして、本当に、より良い理解を得たいです!:)

1
レポートサービスとアプリケーションロール
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 最初のポスター、長い時間はここに潜んでいます。レポートでアプリケーションロールをアクティブにする最良の方法は何ですか? 私はさまざまなことを試しましたが、これまでのところ、動作する唯一の方法は、そのようなアプリケーションロールへの呼び出しを埋め込むことです:- EXEC sp_setapprole 'REPORTZ', 's3cr3t'; select * from mytable where ID < 10000 データセット内。それは機能します...しかし、私の好みではありません(私は実稼働環境にロールバックしたい形ではありません)。 カスタムアセンブリまたはレポートサービスのいずれかの種類の「サーバーフック」を介して、実行時にアプリケーションロールのアクティベーションラインを何らかの方法で「ハイジャック」または「インジェクト」できることを希望します(どちらの場合も、 ) あなたの時間と親切な注意に感謝します。 YS。
25 sql-server  ssrs  role 

3
多言語のWebサイトではどの照合を選択する必要がありますか?
照合はクエリ速度に影響を与えますか?照合順序によってテーブルのサイズは変わりますか? 推奨される照合となる可能性のあるすべての言語(たとえば、Googleの場合)をサポートする必要があるWebサイトを構築する場合はどうすればよいですか? などの文字を保存する必要があり日本語ます。ウェブサイトでの検索somethingではsóméthíng入力のために戻る必要があり、大文字と小文字を区別しない必要があります。 どれが最良の選択であるかをどのようにして知ることができますか?このケースに適した照合はどれですか?

3
Windows 2008R2上のSQL 2008R2の推奨ページファイルサイズ
このMicrosoftの記事-64ビットバージョンのWindows Server 2008またはWindows 2008 R2の適切なページファイルサイズを決定する方法は、64ビットWindows 2008およびWindows 2008R2のページファイルサイズを計算するためのガイダンスを提供します。これは間違いなく汎用サーバーでうまく機能します。Windows 2008 / R2 64ビットで実行されているSQL Server 2008R2のガイダンスは何ですか? メモリ内のデータがページファイルにほとんどヒットしないようにすると、SQLがデータを取得するためにディスクに2回ヒットする可能性があります。SQL Serverでは、メモリ内のデータがページファイルにヒットすることさえ許可していますか?私はを通じて狩りをしましたSQL Server 2008 R2のオンラインブック指導のためにまだページファイルの使用の一切の言及を発見していません。 潜在的な使用シナリオは次のとおりです。物理サーバーに64GBのRAMがある場合、64GBのRAM全体にページファイルが必要ですか?96GBのページファイルに対応する必要がありますか?これは、単一のファイルでは少し過剰に思えます。私は、Windowsがページファイルをメモリに結合して、RAM上のアプリをより簡単にスワップアウトしようとするのが常識であったことを知っていますが、それは本当ですか?ここでは64GB未満のページファイルでパフォーマンスが低下しますか?

6
sysadminアカウントが存在しないときにSQL Server 2008でユーザーにsysadminを追加する方法
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 SQL Server 2008インスタンスを実行しています。残念ながら、テスト中にログインのsysadmin権限を選択解除しましたが、現在はそれを読み取ることができません(sysadmin権限がないため)。 SAを除き、インスタンスの他のsysadminアカウントはありません。 Windows認証のみを設定したので、レジストリのLoginModeを2にハッキングして、SQL認証を使用してSAとしてログインできるようにしました。これにより実際にログインモードがMixedに設定されますが、SAユーザーはデフォルトで無効になっており、sysadmin権限がないため、再度有効にすることはできません。 システム管理者を取得して通常のアカウントに再割り当てできるように、SAログインを有効にするにはどうすればよいですか?このレジストリ設定もありますか、それともmasterデータベースに保存されていますか?

3
SQL Serverでアプリロックリクエストをキャンセルするにはどうすればよいですか?
sp_getapplockストアドプロシージャは、次の戻り値があります。 0:ロックは同期的に正常に許可されました。 1:他の互換性のないロックが解放されるのを待った後、ロックが正常に許可されました。 -1:ロック要求がタイムアウトしました。 -2:ロック要求はキャンセルされました。 -3:ロック要求がデッドロックの犠牲者として選択されました。 -999:パラメーターの検証またはその他の呼び出しエラーを示します。 sp_getapplockデータアクセスレイヤーで呼び出すためのラッパーを書いています。どのような状況で-2が返されるのかを知りたいので、説明的で役立つ例外をスローできます。-1と-3の戻り値の意味は明らかであり、これらの値が返されるテスト条件を簡単に作成できます。どのようにして-2の戻り値を取得できますか?

3
ナチュラルキーは、代理整数キーよりもSQL Serverで高いまたは低いパフォーマンスを提供しますか?
私はサロゲートキーのファンです。私の発見が確認バイアスのリスクがある。 こことhttp://stackoverflow.comの両方で見た多くの質問では、IDENTITY()値に基づく代理キーの代わりに自然キーを使用しています。 コンピューターシステムの私のバックグラウンドは、整数の比較演算を実行すると、文字列を比較するよりも高速になることを教えてくれます。 このコメントは私の信念に疑問を投げかけたので、整数はSQL Serverのキーとして使用する文字列よりも高速であるという仮説を調査するシステムを作成すると思いました。 小さなデータセットでは識別可能な差はほとんどないため、プライマリテーブルに1,000,000行、セカンダリテーブルにプライマリテーブルの各行に10行、合計で10,000,000行の2つのテーブル設定を考えました。二次テーブル。私のテストの前提は、このような2つのテーブルセットを作成することです。1つは自然キーを使用し、もう1つは整数キーを使用し、次のような簡単なクエリでタイミングテストを実行します。 SELECT * FROM Table1 INNER JOIN Table2 ON Table1.Key = Table2.Key; 以下は、テストベッドとして作成したコードです。 USE Master; IF (SELECT COUNT(database_id) FROM sys.databases d WHERE d.name = 'NaturalKeyTest') = 1 BEGIN ALTER DATABASE NaturalKeyTest SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE NaturalKeyTest; END GO CREATE DATABASE NaturalKeyTest ON …

2
SQL Server-スキーマ全体またはオブジェクトに権限を付与しますか?
SQL Severのデータベースパーミッション管理の世界に関しては、私は非常に環境に優しいです。 例をシンプルにしましょう。 アカウント「admin」がスキーマA、B、およびCの所有者であるとします。 スキーマA、B、およびCの下で作成されたオブジェクト(テーブル/ビュー)に対する完全な権限(更新/削除/挿入/選択/変更)が必要な別のアカウント「ミニオン」があります。 これは可能ですか?または、これらのスキーマの下にテーブル/ビューを追加するたびに、grantステートメントを実行する必要がありますか?(私には少しばかげているようです)。

2
単一のクエリを使用して挿入または更新する方法は?
私は、主キーと自動インクリメントされた名前の列IDを持つテーブルテストを持っています。レコードがない場合にのみ、新しいレコードを挿入します。たとえば、 入力はid = 30122および名前= johnです ID 30122のレコードがある場合、名前列をjohnに更新し、レコードがない場合、新しいレコードを挿入します。 私は次のような2つのクエリを使用して行うことができます select * from test where id=30122 いくつかのレコードがある場合は、使用できます update test set name='john' where id=3012 またはレコードがない場合は、使用できます insert into test(name) values('john') しかし、私は単一のクエリを使用したいですか? 誰かがその可能性を伝えることができますか?

1
(NOLOCK)vs NOLOCK
次のようなクエリを見つけたとき、いくつかのブロッキングを調査していました。 SELECT SomeField FROM SomeTable NOLOCK 私はこれを見てNOLOCK、他のクエリ、この場合はDELETEステートメントをブロックする方法を知りました。私は使用しているロックを簡単に調べましたがsp_lock、ここに私が見たものがあります: DB S GRANT TAB IS GRANT PAG S GRANT さて、私の理解では、これNOLOCKはスキーマ安定性ロックのみを取得することになっていますが、なぜISロックを取得したのですか? 私の好奇心がそそられました。私はBOLを見て、それを使用する2つの方法がWITH (NOLOCK)あり、廃止予定(NOLOCK)であることがわかったので、それらを試してみることにしました。次のクエリを実行した後、実行しましたsp_lock: SELECT SomeField FROM SomeTable WITH (NOLOCK) DB S GRANT TAB Sch-Sグラント SELECT SomeField FROM SomeTable (NOLOCK) DB S GRANT TAB Sch-Sグラント 案の定、スキーマ安定性ロックがあります。だから私の質問はこれです:ここで何が起こっているのですか?NOLOCKを使用するために受け入れられ構文のいずれかである場合WITH (NOLOCK)や(NOLOCK)、なぜクエリのエラーは、それが単なるを実行したときに出ませんNOLOCK(括弧なし)?サポートされている場合、ISロックを取得するのはなぜですか?ここに何が欠けていますか?私はオンラインで答えを探していましたが、今のところ不足しています。 これを2008R2と2012の両方でテストしました。

1
選択を追加するときに自己参照スカラー関数のネストレベルを超えました
目的 自己参照関数のテスト例を作成しようとすると、あるバージョンが失敗し、別のバージョンが成功します。 唯一の違いはSELECT、関数本体に追加されることです。その結果、両方で異なる実行計画が作成されます。 機能する機能 CREATE FUNCTION dbo.test5(@i int) RETURNS INT AS BEGIN RETURN( SELECT TOP 1 CASE WHEN @i = 1 THEN 1 WHEN @i = 2 THEN 2 WHEN @i = 3 THEN dbo.test5(1) + dbo.test5(2) END ) END; 関数を呼び出す SELECT dbo.test5(3); 返品 (No column name) 3 機能しない機能 CREATE …

3
SQL Serverは計画キャッシュと実行統計を定期的にクリアします
SQL Server 2014を2016にアップグレードした後、サーバーはキャッシュされた実行計画やdm*ビュー(などdm_exec_query_stats)を数時間ごとにリセットし続けます 誰かが手動で実行するかのように(誰も実行DBCC FREEPROCCACHEしない場合DBCC DROPCLEANBUFFERSを除き、自動的に実行されます)。 同じまさにデータベースがSQL Server 2014とWindows Server 2012で正常に機能し、SQL Server 2016(およびWindows server 2016)に移行した後、事態は南に進みました 私がチェックしたこと:データベースには「自動クローズ」フラグがありません。SQLサーバーはにad hoc optimized設定されていますtrue(私はそれが役立つと思ったが、そうではなかった)。「クエリストア」は「オフ」です。サーバーには16 GBのメモリがあります。 「SQL Serverログ」でも役に立たないものはありません。毎週のバックアップメッセージ... また、この記事をチェックしましたhttps://docs.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-set-options(下の「例」セクションまでスクロールします。それ)計画が自動的にクリアされる状況のリストがあります。それらのどれも当てはまりません。 更新: 残念ながら、どの提案も役に立たなかった。LPIM権限の付与、同じクエリに対して大量のプランを生成したパラメータ化されていないクエリの検出と修正、「最大サーバーメモリ」の削減...プランは数時間から5〜10分ごとにランダムにリセットされ続けます。サーバーが「メモリ不足」の場合、どうして同じバージョンのマシンでも2014バージョンは正常に機能していました。 要求されたsp_Blitzの出力は次のとおりです。 **Priority 10: Performance**: - Query Store Disabled - The new SQL Server 2016 Query Store feature has not been enabled on this database. * xxx …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.