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

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

3
XMLクエリの質問
次のSQL XMLから "DATE"値を取得するSQLクエリを生成しようとしています。 私はこのようなことを試しましたが、概念を理解しているとは思いません。 select xConfig.value('(/SearchjobConfig/QueryString/SearchCriteria/ExpressionSet/SimpleAttributeExpression) [1]','nvarchar(max)') from Job テキストとしてのXMLは次のとおりです。 <SearchJobConfig> <QueryID>1072</QueryID> <QueryString> <SearchCriteria name="Search query" > <ExpressionSet logicalOperator="AND"> <SimpleAttributeExpression displayName="Date" npmPropertyId="4" searchOperation="GREATER_EQUAL" dataType="string" caseSensitive="false">2019-06-01T04:00:00</SimpleAttributeExpression> <SimpleAttributeExpression displayName="Date" npmPropertyId="4" searchOperation="LESS_EQUAL" dataType="string" caseSensitive="false">2019-06-13T03:59:59</SimpleAttributeExpression> <SimpleAttributeExpression displayName="Class" npmPropertyId="1056" searchOperation="EQUALS" dataType="int32" caseSensitive="false">65</SimpleAttributeExpression> </ExpressionSet> </SearchCriteria> </QueryString> </SearchJobConfig> 予想される出力は日付になります: 2019-06-01T04:00:00 2019-06-13T03:59:59 そして、同じ行で結果を得るには何が必要でしょうか。例: date_val_start date_val_end 2019-06-01T04:00:00 2019-06-13T03:59:59 SQL …

1
initdata:カーネルバッファ用のメモリがありません
RedHat Enterprise Linux 7.6上のSQL Server 2017 Developer EditionをSQL Server 2019 CTP 3.0にアップグレードしました。 mssql-serverサービスは開始されなくなります。/ var / opt / mssql / log / errorlogは以下を示します: 2019-06-12 09:36:31.98サーバーMicrosoft SQL Server 2019(CTP3.0)-15.0.1600.8(X64) May 17 2019 00:56:19 Copyright(C)2019 Microsoft Corporation Developer Edition(64-bit)on Linux(Red Hat Enterprise Linux) 2019-06-12 09:36:32.04サーバーUTC調整:-5:00 2019-06-12 09:36:32.05サーバー(c)Microsoft Corporation。 2019-06-12 09:36:32.07サーバー無断転載禁止 2019-06-12 09:36:32.08サーバーサーバープロセスIDは32です 。2019-06-1209:36:32.09サーバーログSQL …

1
自動的に作成されたNT AUTHORITYおよびNT SERVICEアカウントを削除する
そのため、最近ジョブを移動しました。新しいSQL Serverのインストール用のビルドスクリプトで見つけたコードの一部を以下に示します。 IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = N'NT AUTHORITY\SYSTEM' ) BEGIN DROP LOGIN [NT AUTHORITY\SYSTEM]; END IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = N'NT SERVICE\SQLWriter' ) BEGIN DROP LOGIN [NT SERVICE\SQLWriter]; END IF EXISTS ( SELECT * FROM [sys].[syslogins] WHERE [name] = …

3
ストアドプロシージャは、それが格納されているデータベースを参照できますか?
複数のデータベースで、いくつかの変更を加えて複製されたストアード・プロシージャーがあるとします。また、別のデータベースで実行されている場合でも、ストアドプロシージャが格納されているデータベースを参照したいと思います。 現在のデータベースではなく、フルパス(..)を取得する方法、またはストアドプロシージャが格納されているデータベースを取得する方法はありますか?

3
プライマリで一時的に時間がかかる読み取り専用レプリカでの長時間実行クエリ
私は次のように4ノードAGセットアップを持っています。 すべてのノードのVMハードウェア構成: Microsoft SQL Server 2017 Enterprise Edition(RTM-CU14)(KB4484710) 16個のvCPU 356 GB RAM(これまでの話...) 最大並列度:1(アプリベンダーの要求に応じて) 並列処理のコストしきい値:50 最大サーバーメモリ(MB):338944(331 GB) AG構成: ノード1:プライマリまたは同期コミット読み取り不可セカンダリ、自動フェイルオーバー用に構成 ノード2:プライマリまたは同期コミット、読み取り不可のセカンダリ、自動フェイルオーバー用に構成 ノード3:読み取り可能なセカンダリセット、非同期コミット、手動フェイルオーバー用に構成 ノード4:非同期のコミットを備えた読み取り可能なセカンダリセット、手動フェイルオーバー用に構成 問題のクエリ: このクエリについては、まったくおかしなことは何もありません。アプリケーション内のさまざまなキューにある未解決の作業項目の概要を提供します。以下の実行プランのリンクの1つからコードを確認できます。 プライマリノードでの実行動作: プライマリノードで実行した場合、実行時間は通常約1秒です。以下は実行計画です。以下は、プライマリノードからのSTATISTICS IOおよびSTATISTICS TIMEからキャプチャされた統計です。 (347 rows affected) Table 'Worktable'. Scan count 647, logical reads 2491, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical …

1
なぜ複数の(関連付けられていない)時系列履歴テーブルがあるのですか?
SQL Server 2017バックエンドを備えた概念実証システムをセットアップしています。 システムはテンポラルテーブルを使用して、資産構成を記録し、時間の経過に伴う変化を追跡します。 履歴テーブルにリンクされているデータテーブルがあります。それをdbo.MSSQL_TemporaryHistoryFor_12345678900と呼びましょう。 ここまでは順調ですね。私には2つの問題があります。 今日、テーブルのバージョニングをオフにして、計算列を追加できるようにしました。これが行われ、エラーなしで再びオンになりました。 変更前の履歴データをクエリできないことがわかりました。新しいデータが履歴に追加されていますが、事前には何もありません。 SSMSの内部を見ると、すべて同じ名前で16進数のサフィックスが付いた複数の履歴テーブルがあることがわかります(例:dbo.MSSQL_TemporaryHistoryFor_12345678900_A0B1C2D3)。メインデータテーブルの下にリンクされていません。彼らはデータベース内で自分たちだけで浮かんでいるだけです。私がsys.tablesをクエリしたとき、これらは履歴テーブルとして表示されず、メインデータテーブルにリンクされていません。 これらのテーブルには、欠落している履歴データが含まれています。 したがって、私が持っている質問は次のとおりです。 これらの追加の表は何を表していますか? 彼らはどのように作成されましたか? これらをメインの履歴チェーンに何らかの形で再リンクして、履歴レポートを取り戻す方法はありますか? それは非常にイライラするので、あなたが提供できるどんな助けもありがたく受け取られるでしょう。ありがとう。

4
SQL Server 2014のMAXDOP設定
私はこの質問が何度も尋ねられ、それに対する回答もあることを知っていますが、私はまだこの主題についてもう少しガイダンスが必要です。 以下はSSMSからの私のCPUの詳細です: 以下は、DBサーバーのタスクマネージャーの[CPU]タブです。 私はMAXDOP次の式に従って2 の設定を維持しています: declare @hyperthreadingRatio bit declare @logicalCPUs int declare @HTEnabled int declare @physicalCPU int declare @SOCKET int declare @logicalCPUPerNuma int declare @NoOfNUMA int declare @MaxDOP int select @logicalCPUs = cpu_count -- [Logical CPU Count] ,@hyperthreadingRatio = hyperthread_ratio -- [Hyperthread Ratio] ,@physicalCPU = cpu_count / hyperthread_ratio -- [Physical …

1
ストアドプロシージャを更新するには「ダウンタイム」が必要ですか?(「定義変更」エラーによる)
ストアドプロシージャの更新は、ユーザーがシステムを積極的に使用しているときにできることだといつも思っていました。 しかし、私は現在、ストアドプロシージャの更新をテストしており、sprocへの長時間実行中の呼び出しが実行されている間に(呼び出しから4分以上)、sprocを更新しました。(別のウィンドウで別のクエリプランを試すことを計画していました。) 私が長期的なものに戻ったとき、私はこのエラーがありました: The definition of object 'MySprocName' has changed since it was compiled. このエラーは、sprocの定義が更新されると、アクティブに実行されているsprocが失敗することを示しているようです。(sprocが実行を開始すると、定義への変更にもかかわらず、残りの実行に対してその計画を使用すると思いました。) これは本当ですか?sprocの定義を更新するためにダウンタイムが必要ですか?

3
最近の行の累計をより速く取得するにはどうすればよいですか?
現在、トランザクションテーブルを設計しています。各行の現在までの合計を計算する必要があり、パフォーマンスが低下する可能性があることに気付きました。そこで、テスト用に100万行のテーブルを作成しました。 CREATE TABLE [dbo].[Table_1]( [seq] [int] IDENTITY(1,1) NOT NULL, [value] [bigint] NOT NULL, CONSTRAINT [PK_Table_1] PRIMARY KEY CLUSTERED ( [seq] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO そして、最近の10行とその現在までの合計を取得しようとしましたが、約10秒かかりました。 --1st attempt SELECT TOP 10 seq …

2
charindex関数の長い文字列を分割/保存する最速の方法
1 TBの数字列があります。12文字の数字のシーケンスが与えられた場合、元の文字列(charindex関数)でこのシーケンスの開始位置を取得します。 SQL Serverを使用して1GBの文字列と9桁の部分文字列でこれをテストし、文字列をとして保存しましたvarchar(max)。Charindex10秒かかります。1 GBの文字列を900バイトのオーバーラップチャンクに分割し、バイナリ照合でchunkofstringを使用してテーブル(StartPositionOfChunk、Chunkofstring)を作成すると、インデックス作成に1秒未満かかります。10GB、10桁の部分文字列の後者の方法では、charindexが1.5分に上昇します。より高速な保存方法を見つけたいのですが。 例 数字列:0123456789-検索する部分文字列345 charindex( '345'、 '0123456789')は4を与えます 方法1:これを、1つの列で構成されるSQL Serverテーブルstrtableに格納しcolstr、実行できます。 select charindex('345',colstr) from strtable 方法2:または、元の文字列を分割することにより、テーブルstrtable2(pos、colstr1)を作成できます。2; 123 | 3; 234 asoそして、クエリを select pos from strtable2 where colstr1='345' 方法3:元の文字列をより大きなチャンクに分割することで、テーブルstrtable2(pos2、colstr2)を作成できます1; 01234 | 4; 34567 | 7、6789、次いで select pos2+charindex('345',colstr2) from strtable2 where colstr2 like '%345%' 最初の方法が最も遅いです。 2番目の方法では、データベースのストレージサイズが大きくなります。 方法3:バイナリ照合でcolstr2の長さを900バイトに設定し、この列にインデックスを作成すると、1GBの文字列と9桁の部分文字列の検索に1秒かかります。10GBの文字列と10桁の部分文字列の場合、istには90秒かかります。 これをより速くする他のアイデア(おそらく、文字列を使用することによって、文字列は長整数の数字で構成されます...)? 検索では常に、1 TBの数字列の12桁の部分文字列が検索されます。SQLServer 2017 …

1
この列で自動作成された統計が空になるのはなぜですか?
情報 私の質問は、ヒープである適度に大きなテーブル(約40GBのデータスペース)に関するもの です(残念ながら、アプリケーションの所有者はテーブルにクラスター化インデックスを追加できません) ID列(ID)に自動作成された統計が作成されましたが、空です。 統計の自動作成と統計の自動更新がオンになっています テーブルで変更が行われました 更新されている他の(自動作成された)統計があります インデックスによって作成された同じ列に別の統計があります(重複) ビルド:12.0.5546 重複する統計が更新されています: 実際の質問 私の理解では、まったく同じ列(重複)に2つの統計がある場合でも、すべての統計を使用でき、変更が追跡されるので、なぜこの統計が空のままなのですか? 統計情報 DB統計情報 テーブルサイズ 統計が作成される列情報 [ID] [int] IDENTITY(1,1) NOT NULL ID列 select * from sys.stats where name like '%_WA_Sys_0000000A_6B7099F3%'; 自動作成 別の統計に関する情報を取得する select * From sys.dm_db_stats_properties (1802541555, 3) 私の空の統計と比較して: 「生成スクリプト」からの統計+ヒストグラム: /****** Object: Statistic [_WA_Sys_0000000A_6B7099F3] Script Date: 2/1/2019 10:18:19 AM ******/ …

4
SQL Server 2016の移植性を最大化するためのベストプラクティス
ソリューションのプロトタイプを開発する場合、多くの場合、テクノロジーはまだ決定されておらず、完成品で使用されるものと同じではない可能性があります。 このシナリオでは、別のサーバーへの最終的な移行を簡略化するために、Microsoft SQL Serverを使用してクエリをできるだけ標準的に作成する傾向があります。 SQL Serverで直接、またはSQL Server Management Studio(SSMS)を介して、T-SQLダイアレクトを介した標準SQLの使用を強制する方法またはいくつかの既知の方法はありますか?

2
古い値でのテンポラルテーブルのパフォーマンスが低い
テンポラルテーブル内の履歴レコードにアクセスすると、奇妙な問題が発生します。AS OF副次句を介してテンポラルテーブルの古いエントリにアクセスするクエリは、最近の履歴エントリのクエリよりも時間がかかります。 履歴テーブルはSQL Serverによって生成され(日付列にクラスター化インデックスが含まれ、ページ圧縮を使用)、履歴テーブルに5,000万行を追加しました。クエリは約25,000行を取得しました。 問題の根本的な原因を特定しようとしましたが、特定できませんでした。これまでにテストしました: クラスター化インデックスを含む5,000万行のテストテーブルを作成して、速度の低下が単にボリュームによるものかどうかを確認します。一定の時間(約400ミリ秒)で25K行を取得できました。 履歴テーブルからページ圧縮を削除します。これは検索時間には影響しませんでしたが、テーブルのサイズを大幅に増やしました。 ID列と日付列を使用して、履歴テーブルの行に直接アクセスしてみました。ここが少し面白かった場所です。AS OFサブ句の場合と同様に、約1200ミリ秒かかるテーブルの約400ミリ秒で、古い行にアクセスできました。テストテーブルで日付列のフィルタリングを試みたところ、ID列でのフィルタリングと比較して、同様の速度低下に気づきました。これは、日付の比較がいくつかの減速の背後にあると私に信じさせます。 私はこれをもっと見たいのですが、間違った木を吠えないようにしたいのです。まず、テンポラルテーブルの古い履歴データにアクセスするときに、他の誰かがこれと同じ動作を経験しましたか?次に、パフォーマンスの問題の根本原因をさらに特定するために使用できるいくつかの戦略は何ですか(実行プランを調べ始めたばかりですが、それでも私には少し謎めいています)。 実行計画 これらは単純な取得クエリです。最初のクエリは古い行にアクセスし、2番目のクエリは新しい行にアクセスします。 古い行:実行時間〜1200ms 最近の行〜350msの実行時間 テーブルの詳細 これらはテンポラルテーブルの列です。履歴テーブルには同じ列がありますが、(履歴テーブルの要件に従って)主キーはありません。 以下は、履歴テーブルのインデックスです。

2
ピボットの列として定期的な平日を作成するにはどうすればよいですか?
私はプログラミングとデータベースの初心者であり、次のシナリオでいくつかの助けに感謝します。 SQL ServerでPHPを使用しています。私は従業員の出席システムを構築しています。月を行、すべての曜日名を列(特定の年)として(ピボット)テーブルを作成したいと考えています。セルの値は日数です(1、2、3 ... 31)。 セルの背景色(テーブル列として既に存在)は、従業員の休暇のタイプを宣言します。テーブルには次の列がありますemployee_id, leave_date, leave_type, leave_type_color。 以下のような結果を達成したい: ありがとうございました。
8 sql-server  php  pivot 

2
予測レビューのためのデータベース設計
私はリレーショナルデータベースについてもっと学びたいと思っており、実際に何かをするために学ぶより良い方法はないと思いました。私は個人的な予算の会計と予測を見る個人的な試みをすることにしました。これまでにいくつかの調査を行ったので、現在のデータベースの設計と正規化について洞察を得たいと思います。 現在のデータベース設計に関するあなたの考えと提案は何ですか?私はあなたが私を助けるのをよりよく助けるためにいくつかの情報を以下に含めました:) 開示:これは個人的なプロジェクトです。宿題や仕事のためではありません。 ビジネスの事実 銀行ACCOUNTは多くのことができますENTRIES はENTRY、CREDITまたはDEBIT アンはENTRY、それは上の貸方かに引き落とされた日付を持っています アンはENTRYシングルを持っていますPAYEE ENTRYAに関連付けることができますBUDGET CATEGORY A CREDITはENTRY のCREDIT説明がありますENTRY A CREDITは将来的にスケジュールできます A CREDITは頻度や量で再発する可能性があります A DEBITはENTRY のDEBIT説明がありますENTRY A DEBITは将来的にスケジュールできます A DEBITは頻度や量で再発する可能性があります A PAYEEには名前があります AにBUDGETは多くのBUDGET CATEGORIES A BUDGETは単一のカレンダーにのみ関連付けることができます A BUDGET CATEGORYは多くのENTRIES A BUDGET CATEGORYには名前があります A BUDGET CATEGORYにはBUDGET金額があります A FORECASTには開始日があります A FORECASTには終了日があります A FORECASTには期首残高があります AにFORECASTは多くのFORECASTED DAYS A FORECASTは1つFORECASTED BUDGET …

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