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

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

4
別の列に基づいて積算合計をリセットする
現在の合計を計算しようとしています。ただし、累積合計が別の列の値よりも大きい場合はリセットする必要があります create table #reset_runn_total ( id int identity(1,1), val int, reset_val int, grp int ) insert into #reset_runn_total values (1,10,1), (8,12,1),(6,14,1),(5,10,1),(6,13,1),(3,11,1),(9,8,1),(10,12,1) SELECT Row_number()OVER(partition BY grp ORDER BY id)AS rn,* INTO #test FROM #reset_runn_total インデックスの詳細: CREATE UNIQUE CLUSTERED INDEX ix_load_reset_runn_total ON #test(rn, grp) サンプルデータ +----+-----+-----------+-----+ | id | val | reset_val …

3
フィルタリングされたインデックスは、フィルタリングされたパーツがWHEREではなくJOINにある場合にのみ使用されます
以下のフィルターされたインデックスを作成しましたが、2つのクエリをさらに実行すると、このインデックスは、where句ではなく、JOINにEND_DTTMがある最初の例のシークにのみ使用されます(クエリの唯一の違いです)。 。なぜこれが起こるのか誰かが説明できますか? インデックスの作成 CREATE NONCLUSTERED INDEX [ix_PATIENT_LIST_BESPOKE_LIST_ID_includes] ON [dbo].[PATIENT_LIST_BESPOKE] ( [LIST_ID] ASC, [END_DTTM] ASC ) WHERE ([END_DTTM] IS NULL) クエリ DECLARE @LIST_ID INT = 3655 --This one seeks on the index SELECT PATIENT_LISTS.LIST_ID FROM DBO.PATIENT_LISTS LEFT JOIN DBO.PATIENT_LIST_BESPOKE ON PATIENT_LISTS.LIST_ID = PATIENT_LIST_BESPOKE.LIST_ID AND PATIENT_LIST_BESPOKE.END_DTTM IS NULL WHERE PATIENT_LISTS.LIST_ID = @LIST_ID …

1
SQL Serverの強く型付けされたxml要素の値をXQueryに置き換えます
XMLスキーマコレクション内で次のように定義された要素を指定します。 <xsd:element name="xid"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:maxLength value="32" /> </xsd:restriction> </xsd:simpleType> </xsd:element> XQueryを使用して要素をどのように更新しますか? 要素は、スキーマコレクションのns名前空間内にあります。以下のクエリで要素を更新しようとしています: update cm.item set data.modify( 'declare namespace ns="http://www.anon.com"; replace value of (/ns:*/ns:xid)[1] with "X00011793" cast as element(ns{http://www.anon.com}:xid,#anonymous) ?') where id = 11793 しかし、これは次のエラーを生成します: メッセージ9301、レベル16、状態1、行2 XQuery [cm.item.data.modify()]:このバージョンのサーバーでは、「としてキャスト」は使用できません。「としてキャスト」を使用してください 構文。 キャストを完全に削除してこのクエリを使用する場合: update cm.item set data.modify( 'declare namespace ns="http://www.anon.com"; replace value …

3
SQLサーバー:巨大なテーブルのフィールドを小さなチャンクで更新:進行状況/ステータスを取得する方法?
非常に大きな(1億行)テーブルがあり、その上のいくつかのフィールドを更新する必要があります。 ログシッピングなどの場合も、一口サイズのトランザクションを維持する必要があります。 以下はトリックを行いますか? そして、どのようにして出力を印刷して、進行状況を確認できますか?(そこにPRINTステートメントを追加しようとしましたが、whileループ中に何も出力されませんでした) コードは次のとおりです。 DECLARE @CHUNK_SIZE int SET @CHUNK_SIZE = 10000 UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' where deleted is null or deletedDate is null WHILE @@ROWCOUNT > 0 BEGIN UPDATE TOP(@CHUNK_SIZE) [huge-table] set deleted = 0, deletedDate = '2000-01-01' where deleted is null or …
10 sql-server  t-sql 

1
SQL Serverデータフォルダーのアクセス権
SQL Server 2014の新規インストールを行いました。次に、以前のSQL Server 2012サーバーからいくつかのデータベースをアタッチしたいと思いました。私はすべてのコピーmdfとldfデータディレクトリにファイルを、私はそれらを添付しようとしたとき、私はこのエラーメッセージが表示されました: 物理ファイル 'D:\ SQLSERVERDATA \ MSSQL12.BIDEV \ MSSQL \ DATA \ controlling_demo.mdf' を開くか作成しようとしたときに、CREATE FILEでオペレーティングシステムエラー5(アクセスが拒否されました)が発生しました。 (Microsoft SQL Server、エラー:5123) ファイルのセキュリティ設定(ファイル、プロパティ、セキュリティを右クリック)を確認したところ、読み取り権限がないと表示されました。ファイルのコピーに使用したアカウントは、管理者グループに属しています。私はDATAフォルダを完全に制御できますが、そこにコピーしたファイルだけが制限されています。 フォルダ全体にセキュリティ権限を再適用しようとすると、次のように表示されます。 コンテナ内のオブジェクトを列挙できませんでした。アクセスが拒否されました。 ファイルを別の場所にコピーすると、アクセス権が与えられます。 質問は、DATAフォルダー内のこれらのファイルへのアクセス権を取得するにはどうすればよいですか?

2
Windows 10上のSQL Server 2000
Windows 10にSQL Server MSDE 2000 SP4をインストールする必要があります。 Windows 7と8.1を実行する他のマシンがあり、SQL Server MSDE 2000は正常に動作します(マージレプリケーションも構成されています)。 現在、Windows 10で同じシナリオをテストしていますが、インストール中にセットアップが予期せず終了します。 このバージョンは非常に古いことを知っていますが、Windows 10にインストールするための回避策はありますか?

2
SQL Serverフルテキストインデックスを有効にした後、クエリの更新が遅くなる
asp.net Webサイトで、データベースに対して実行される挿入、更新、削除のクエリが多数あります。 数日前に、1つのテーブルの2つの列にフルテキストインデックスを作成します。その後、Webサイトがそのテーブルに対して更新クエリを実行すると、SQL Serverプロセスのメモリとディスクの使用量が急激に増加し、更新が遅くなることがわかりました。クエリは、フルテキストインデックスを作成する前に、パフォーマンスの問題なしに実行されました。 以前は非常に単純だった更新クエリが複雑になっていることにも気づきました。これは、実行プランに全文インデックスの更新などがあるためです。これは、フルテキストを有効にした後に複雑になった新しい実行プランの一部です。 サイトのコンテンツを更新する数時間で、5000の更新クエリを実行しました。フルテキストインデックス処理は、各行で毎回行われると思います。 行の更新の開始時に全文スキャンを無効にしてから、再度有効にする必要がありますか(この関連質問のように)? SQL Serverにフルテキストインデックス作成を5分間停止してから、新しいデータのインデックス作成を開始するように指示できますか? より良い代替手段はありますか?SQL Server 2012を使用しています。

2
タイムスタンプに基づくウィンドウオフセット
ソーシャルフィードの結果をページングするために使用するクエリを書いています。コンセプトは、モバイルアプリがN個のアイテムをリクエストし、@CutoffTime以下で呼び出した開始日時を提供することです。カットオフ時間の目的は、ページングウィンドウをいつ開始するかを確立することです。行オフセットの代わりにタイムスタンプを使用している理由は、新しいソーシャルコンテンツが追加された場合でも、古い投稿を取得するときに、一貫した場所からタイムスタンプを使用できるようにするためです。 ソーシャルフィードアイテムは自分または友達からのものである可能性があるUNIONため、これら2つのグループの結果を組み合わせるためにa を使用しています。もともと私はTheQuery_CTEなしでロジックを試しました、UNIONそしてそれは遅い犬でした。 これは私がやったことです(関連するテーブルスキーマを含む): CREATE TABLE [Content].[Photo] ( [PhotoId] INT NOT NULL PRIMARY KEY IDENTITY (1, 1), [Key] UNIQUEIDENTIFIER NOT NULL DEFAULT NEWID(), [FullResolutionUrl] NVARCHAR(255) NOT NULL, [Description] NVARCHAR(255) NULL, [Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(), ); CREATE TABLE [Content].[UserPhotoAssociation] ( [PhotoId] INT NOT NULL, [UserId] INT NOT NULL, [ShowInSocialFeed] …

2
TDE準備:復元用のキー/証明書のバックアップ
私はTDE暗号化をよりよく理解するために開発環境で働いています。別のサーバーでのバックアップおよびリストアと一緒に機能しています。いくつか質問がありましたが、対応する秘密鍵で証明書をバックアップする必要があることを知っています。 USE master; GO BACKUP CERTIFICATE Test TO FILE = 'C:\Test.cer' WITH PRIVATE KEY (FILE = 'C:\Test.pvk', ENCRYPTION BY PASSWORD = 'Example12#') これらは、障害が発生した場合に新しいサーバーに移動/復元する必要があります。別のサーバーに復元する必要がある場合に必要となる、ソースサーバーからバックアップする必要があるものは他にありますか? また、秘密鍵のストレージに関する提案はありますか?現時点での私の考えは、証明書、秘密鍵、およびパスワードを、個別にバックアップされ、オフサイトで複製されるKeePassデータベースにバックアップすることです。 それでも、KeePass秘密鍵をどこにバックアップするかという疑問は残りますか?

2
なぜasync_network_ioの待機タイプが発生するのですか?
先週、データベースで奇妙なことが起こりました。新しいエンティティなどを保存できなかったユーザーに対して、アプリケーションが突然ブロックされました。SQLServerのアクティビティモニター(2008と互換モード2005)を確認した後、次の3つのエントリが表示されました。 しばらくすると、ユーザーは接続タイムアウトを取得しました。プロセス64を強制終了したとき、彼らは再び正常に保存できました。 問題は、ブロック中に保存しようとしたエンティティがDBに複数回(最大3回)挿入されたことですが、これを防ぐためのコード(数値列は一意でなければならないが制約なし)があるはずです...チェックはコードで行われます)。 Entity Framework 6.0を使用しています。 これらのASYNC_NETWORK_IO待機タイプが発生する理由とタイミング、およびそれらを回避する方法を知っている人はいますか? そして、それらは正確にはどういう意味ですか?

1
Azure SQL Serverが非常に遅いのはなぜですか?
現在、非常に能力の低いVMがあり、より良い仕様のAzure VMに移行することを提案しています。問題は、Azure VMのスペックが高くても、Azure VMが元のVMよりもはるかに遅いことです。 元のサーバーは、2 GBのメモリを備えた2コアVMであり、Webサーバーでもあります。Microsoft SQL Server Web Edition 2008 R2を実行しており、このサーバーは他の目的で使用されるため、SQL Serverの最大サーバーメモリを512MBに制限する必要がありました。 新しいサーバーは、データベースサーバーのみである、7 GBのメモリを備えた4コアVMです。Microsoft SQL Server Standard Edition 2008 R2を実行しており、SQL Serverが使用できるメモリの量を制限していません。 これは、ミラーリング環境でセットアップされた2つのサーバーの1つですが、テストを実行しているデータベースがミラーリングされていません。このサーバー上の他のデータベースは、現時点ではトラフィックをあまり取得していません(実際、これらのテストを実行している間、アクティビティモニターは他のDBでアクティビティを示していません)。 Azure VMの問題はハードドライブがネットワークリソースであるため、スローダウンの原因になることは承知していますが、IO統計に物理的な読み取りが0の場合でも、速度は遅くなります。 ディスクのストライプ化(ドライブごとに2つのディスク)、ログとデータファイルを別々のドライブに配置することなど、Azure VMのこのページのチューニングアドバイスに従いました。 私が行っていないことは、ページ圧縮を有効にし、データベースの自動拡張を制限し、SQLサーバーのエラーログとトレースファイルのディレクトリをデータディスクに移動することだけです。私は古いサーバーでもそれをしていません。 古いサーバーではこの調整は行われず、ログとデータファイルはストライプ化されていない同じドライブ上にあります。 現在のサーバーのデータベースは65 GB(45データと20ログ)であり、新しいサーバーに転送するには少し大きすぎるため、より小さなDB(6データと13.5ログ)でテストしています。 古いサーバーでの結果CPU time = 1311 ms, elapsed time = 1057 ms.と新しいサーバーでCPU time = 1281 ms, elapsed time = 2525 ms. …

1
このクエリで主(クラスター)キーが使用されないのはなぜですか?
スキーマ構造が次のようなSQL Server 2008 R2テーブルがあります。 CREATE TABLE [dbo].[CDSIM_BE] ( [ID] [bigint] NOT NULL, [EquipmentID] [varchar](50) NOT NULL, [SerialNumber] [varchar](50) NULL, [PyrID] [varchar](50) NULL, [MeasMode] [varchar](50) NULL, [ReadTime] [datetime] NOT NULL, [SubID] [varchar](15) NULL, [ProbePosition] [float] NULL, [DataPoint] [int] NULL, CONSTRAINT [PK_CDSIM_BE] PRIMARY KEY CLUSTERED ([ID] ASC, [EquipmentID] ASC, [ReadTime] ASC) WITH …

1
SQL Server 2014でクエリプランがパフォーマンスを悪化させる
最近、サーバーをSQL Server 2008R2からSQL Server 2014にアップグレードしました。2008R2で正常に実行されたクエリがありますが、2014年には実行が非常に遅くなり、実行計画が不良です。 私はいくつかのテストを行いました... 2014 DBを2008/2012互換モードに切り替えます。 ページネーションを使用してクエリをテストします。 これらの両方により、クエリはSQL Server 2008R2と同じように高速で実行されました。 SQL Server 2014で計画がなぜそれほどひどく、クエリが長く実行されるのですか? この画像は2つのクエリを示しており、1つは2008R2での実行方法と同じように行番号を使用しており、2つ目は改ページ調整による修正です。どちらも2014年に実行されましたが、どちらも非常に異なりますが、2008年には、2014年に改ページ調整を使用した場合と同じパフォーマンスが得られます。

1
SQL Serverの使用をリセットする
私の開発環境では、クエリをいじっています。そのために、SQL Serverのメモリ、プランなどをリセットする必要があります。これにより、クエリがすべての値がリセットされたサーバー上の唯一のストレス/作業プロセスであることを確認できます。 私がしていることのいくつか 発砲チェックポイント DBCC DROPCLEANBUFFERS; DBCC FREEPROCCACHE; DBCC FLUSHPROCINDB DBCC FREESESSIONCACHE DBCC SQLPERF( "sys.dm_os_wait_stats"、CLEAR); 私はそれを正しくやっていますか?または、新鮮な統計をクリアまたは表示するには、さらに多くのものが必要ですか?

2
NUMAノード000でPLEが低い、001で高い
SQL ServerのNUMAノード全体のPLE(Page Life Expectancy)を調べていますが、かなり奇妙な分布に遭遇しました。NUMAノード000のPLEは001に比べて非常に低くなっています。これがなぜかはわかりません。環境内の他の複数のSQL Serverを確認しましたが、他の運用サーバーにはこの動作がありません。 システムは256GB RAMのDell m620でSQL Server 2012 Enterprise Editionを実行しています。2ソケット、6コア(HT対応)マシンです。MAXDOPは6に設定されています。AFAIKメモリモジュールは、CPUのメモリバンク全体に均等に取り付けられています。 NUMAノード000には他に実行すべきSQLタスクがあること、他のノードがあることを教えてくれますが、どこで聞いた/見たのか忘れてしまいました。 @@Version 表示:Microsoft SQL Server 2012(SP1)-11.0.3412.0(X64)

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