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

SQL Server 2014(メジャービルドバージョン12.0.xxxx)。sql-serverにもタグを付けてください。

1
ALTER TABLE…通常のテーブルからパーティションテーブルへの切り替えが失敗する
以下のコードは次のことを行います: C:\ TEMPにデータベースplay_partitionを作成します 2つの同一のパーティション分割テーブルplay_tableおよびarchive_play_tableを作成します play_tableパーティション1をarchive_play_tableパーティション1に切り替えます play_tableパーティション2と同じファイルグループに、play_tableと同じ構造の新しいパーティション分割されていないテーブルtemp_tableを作成します。 play_table_partition 2をtemp_tableに切り替えます temp_tableをplay_tableパーティション2に戻そうとし、失敗します メッセージ4982、レベル16、状態1、行64のALTER TABLE SWITCHステートメントが失敗しました。ソーステーブル 'play_partition.dbo.temp_table'の制約をチェックすると、ターゲットテーブル 'play_partition.dbo.play_table'のパーティション2で定義された範囲では許可されない値が許可されます。 なぜ失敗するのですか? SQL Server 2014(Enterprise Edition Trial)を使用しています。 よろしく、 コリン・デイリー http://www.colindaley.com/translator /* Playing with partitioned tables */ USE master; GO DROP DATABASE play_partition; GO CREATE DATABASE play_partition ON PRIMARY( NAME = play_partition , FILENAME = 'C:\TEMP\play_partition.mdf') ,FILEGROUP play_fg1( …

3
「データベースをSQL Azureにデプロイする」タスクがない
最近SQL Server 2014 Expressを自分のワークステーションにインストールし、SQL Azureに展開しようとしています。以前、SQL Server 2012 Expressを使用する以前のワークステーションで次のことを行っています。 データベースを右クリック> [タスク]> [SQL Azureにデータベースをデプロイ] SQL Server 2014では、このオプションは完全に欠落しており、代わりに新しいオプション「データベースをWindows Azure VMにデプロイする」に置き換えられています。 SQL Azureに展開するためのオプションがない理由を理解できません。SQL Server 2014で現在個別にインストールする必要があるものはありますか?私がオンラインで読んだことから、2014年版には両方のオプションが存在するはずです。マイクロソフトはSQL Server 2014 Expressのこのオプションを削除しましたか?

1
SQL Serverのアップグレードが失敗した後にデータベーススナップショットを「ハックドロップ」する方法
SQL Serverが2014にアップグレードされた後、データベーススナップショットを削除できない問題を処理しています。スナップショットは無効ですが、削除することはできません。 Connectアイテムには残念なコメントが含まれていますが、最終的には修正されると思います。しかし、私はこれにすぐに対処する必要があります。 このバグのために削除できないデータベーススナップショットを削除する方法はありますか?これを行うために文書化された手段をすべて使い果たしたのではないかと心配しています。ドキュメント化されていないシステムテーブルの変更が必要になる場合があります。データベース(スナップショット)を強制的に削除する方法はありますか?

2
SQL Server:すべての列を含むインデックスをカバーしていますか?
私たちのチームは、アプリケーションと関連するデータベースを継承しています。以前の開発者は、すべてのテーブルのすべてのインデックスにINCLUDE句があり、それ以外の場合はキーの一部ではないすべての列を常に追加するというルールを適用しているようです。これらのテーブルには、平均して2〜5個のインデックスまたは一意の制約と外部キーがあります。 アクセスはデフォルトで(常にではないが)すべての列を取得するORMを介して行われるため、データベースでスローされるクエリに関係なく、SELECTのパフォーマンスを向上させることを目的としています。これの副作用は、ストレージ要件の増加(おそらく大幅に増加する)とINSERT / UPDATE / DELETEの追加のオーバーヘッド時間であると予想されます。 問題は、これは賢明な戦略ですか?私たちのチームにはSQL Serverの履歴がありますが、内部の動作について専門家であると考えるメンバーはいません(ただし、この戦略が最適だった場合、今のところデフォルトではないのではないかという質問が出されました)。他にどのような副作用(データベースサーバーのCPU /メモリ/ TempDBの使用など)が予想されますか、または上記の仮定の一部が正しくありませんか? さらに、アプリケーションは、オンプレミスのSQL Server(2012年以降のバージョン)とAzure SQLの両方にインストールできます-この結果として、2つの違い、またはAzureへの追加の副作用に備えておく必要があります。アプローチ?

1
sys.objects列[タイプ]奇妙な値 'ST'
sys.objectsの[Type]列に奇妙な(文書化されていない)値が表示されます。以下に示すように、値は「ST」です(注、dbo.Recordはユーザーテーブルです)。 この「ST」値の意味を誰かが知っていますか?(これはSQL Server 2014 Developer Editionにあります)

6
ストアドプロシージャを並列で実行する
同じストアドプロシージャを、異なるパラメーターを使用して複数回同時に実行しようとしています。 SQL 2014を使用しています これは、手順が完了するまでに約7時間かかるためです。実際には同じプロセスを何度も実行します。したがって、たとえば、ブランチごとに新しいデータベースとテーブルを構築する場合があります。 ストアドプロシージャを分解して、ブランチごとに実行し、各クエリを並行して実行できるようにしたいと思います。私はこれを個別のクエリウィンドウで実行することでテストしましたが、ほぼ80%速く実行されます。 誰かが私にクエリを並行して実行するためのダミーガイドを教えてもらえますか?

1
演算子のハッシュ一致内部結合を削除することによるクエリパフォーマンスの向上
以下のこの質問の内容を自分の状況に適用しようとしていますが、可能であれば、演算子Hash Match(Inner Join)をどのようにして取り除くことができるのか、少し混乱しています。 SQL Serverクエリのパフォーマンス-ハッシュマッチ(内部結合)の必要性の排除 私は10%の費用に気づき、それを減らすことができるかどうか疑問に思っていました。以下のクエリプランを参照してください。 この作業は、今日調整しなければならなかったクエリサッドから来ています。 SELECT c.AccountCode, MIN(d.CustomerSID) FROM Stage.Customer c INNER JOIN Dimensions.Customer d ON c.Email = d.Email OR ( c.HomePostCode = d.HomePostCode AND c.StrSurname = d.strSurname ) GROUP BY c.AccountCode これらのインデックスを追加した後: --------------------------------------------------------------------- -- Create the indexes --------------------------------------------------------------------- CREATE NONCLUSTERED INDEX IDX_Stage_Customer_HOME_SURNAME_INCL ON Stage.Customer(HomePostCode ,strSurname) INCLUDE (AccountCode) …

3
SQL Server Management Studio 2014バックアップ-プロパティデバイスの設定エラー
最近、ローカルSQL Serverをバージョン2014にアップグレードしました。 これにより、SSMS 2014もインストールされました。SQLServer Management Studio 2014を使用してバックアップ(ローカルとリモートの両方、サーバーバージョン2008〜2014)を作成すると、次のエラーが発生します。 このアクションを実行するには、プロパティデバイスを設定します。 ドロップダウンで[ディスク]を選択し、バックアップのパスも選択しました。パスはサーバー上に存在し、このパスに対する完全な権限を持っています。 同じ設定で古いSQL Server Management Studio 2012を使用すると、バックアップは問題なく機能します。 T-SQLを使用しても機能しますBACKUP DATABASE SOMEDATABASE TO DISK = 'D:\SomeDir\SomeDataBase.bak' WITH COMPRESSION したがって、問題は管理ツールバージョン2014に固有のものである必要があります。インターネットで見つけた唯一の解決策は、パスが見つからなかったことによるものでしたが、私には当てはまりません。 誰かがこの問題を経験したり解決したりしていますか? 編集:スクリーンショットを追加(UIはドイツ語) 翻訳: -Vollständig: Full -Datenträger:Disk メディアとセキュリティのオプションは変更されていません。マスターデータベースは例として取り上げただけで、他のすべてのデータベースで発生します。 2015年7月21日更新 この問題は、ドイツ語版のWindowsで英語の言語パックを使用していて、ドイツ語版のSQL Server 2014インストールを使用していることに関連しているようです。Windowsの表示言語がドイツ語に設定されている場合、問題は解消されます。Windowsの表示言語が英語に設定されている場合、問題が再発します。 すべての貢献に感謝します。

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
この列で自動作成された統計が空になるのはなぜですか?
情報 私の質問は、ヒープである適度に大きなテーブル(約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 ******/ …

1
Microsoftはファイル数と並列処理に関してクエリオプティマイザーを変更しましたか
Microsoftはファイル数と並列処理に関してクエリオプティマイザーを変更しましたか?オプティマイザは、クエリの並列度を決定するためにファイル数を考慮しなくなりましたか?もしそうなら、誰がいつ変更が行われたか知っていますか?そうでない場合、そのトピックについて説明しているMicrosoftのドキュメント(SQL Server 2014または2016の現在のドキュメント)へのリンクを誰かが提供できますか?

3
特定の数式に基づいて欠落している最小の要素を特定する
数百万行のテーブルから欠落している要素を見つけることができる必要があり、BINARY(64)列の主キーがあります(これは計算に使用する入力値です)。これらの値はほとんど順番に挿入されますが、削除された以前の値を再利用したい場合があります。削除されたレコードをIsDeleted列で変更することはできません。現在の行の前に何百万もの値がある行が挿入される場合があるためです。つまり、サンプルデータは次のようになります。 KeyCol : BINARY(64) 0x..000000000001 0x..000000000002 0x..FFFFFFFFFFFF したがって、0x000000000002との間にすべての欠損値を挿入すること0xFFFFFFFFFFFFは実行不可能であり、使用される時間とスペースの量は望ましくありません。基本的に、アルゴリズムを実行する0x000000000003と、最初の開始点であるが返されることが期待されます。 私はC#でバイナリ検索アルゴリズムを考え出しました。これは、位置の各値についてデータベースにクエリを実行し、iその値が予期されているかどうかをテストします。コンテキストについては、私のひどいアルゴリズム:https : //codereview.stackexchange.com/questions/174498/binary-search-for-a-missing-or-default-value-by-a-given-formula このアルゴリズムは、たとえば、100,000,000アイテムのテーブルで26-27 SQLクエリを実行します。(それほど多くはないように見えますが、非常に頻繁に発生します。)現在、このテーブルには約50,000,000行あり、パフォーマンスが顕著になりつつあります。 私の最初の代替の考えは、これをストアドプロシージャに変換することですが、それには独自のハードルがあります。(私はBINARY(64) + BINARY(64)アルゴリズムや他の多くのものを書かなければなりません。)これは苦痛ですが、実行不可能ではありません。また、に基づく変換アルゴリズムの実装を検討しましたROW_NUMBERが、これについては非常に悪い直感があります。(A BIGINTはこれらの値に対して十分な大きさではありません。) 私はのためにアップしてる他の Iのように、提案本当にこれは、可能な限り迅速にする必要があります。C#クエリで選択された唯一の列に値するのはであり、他の列KeyColはこの部分には関係ありません。 また、価値のあるものとして、適切なレコードをフェッチする現在のクエリは次の行に沿っています。 SELECT [KeyCol] FROM [Table] ORDER BY [KeyCol] ASC OFFSET <VALUE> ROWS FETCH FIRST 1 ROWS ONLY <VALUE>アルゴリズムによって提供されるインデックスはどこにありますか。私もまだBIGINT問題を抱えていませんが、問題はOFFSETありません。(現在、50,000,000行しかないということは、その値を超えるインデックスを要求しないことを意味しますが、ある時点でBIGINT範囲を超えることになります。) いくつかの追加データ: 削除から、gap:sequential比率は約1:20です。 テーブルの最後の35,000行には、> BIGINTの最大値があります。

1
varbinary(max)からデータをnullにした後でDBを縮小する最良の方法は?
varbinary(max)型のフィールドに大量のデータが格納されたデータベースがあります。ある時点で、すべての行ではなく、ほとんどの行のデータをパージできます。私たちの計画は、そのフィールドをnull可能にし、不要になったときにデータをnullにすることです。それができたら、DBのサイズを小さくしたいと思います。これを達成するための最良の方法は何ですか? 現在の設定でスペースを再利用する良い方法がない場合、私が持っているアイデアの1つは、メインテーブルへのキーとデータフィールドの2つの列だけを持つ別のテーブルにデータフィールドを移動することです。次に、不要になった行を削除するだけです。(そして、何らかの縮小を行います。)ただし、これは、既存のフィールドを単にnull可能にするよりも、はるかに難しい変更です。 注:データベースファイルのサイズを小さくすることはあまり気にしていませんが、新しく解放されたスペースが再利用可能になることは気にします。 DBサイズの90%以上がこの1つのフィールドです。私はすでに3TBです。

2
SQL Server 2014の圧縮と最大行サイズ
多くのdecimal(26,8)列を含む広い非正規化テーブルを作成する必要があります(1024列の制限より少なく、ほとんどの列はnullまたはゼロになります)。行あたりの制限は8060バイトなので、ページ圧縮を使用してテーブルを作成しようとしました。以下のコードはテーブルを作成し、1つの行を挿入し、行サイズをクエリします。行のサイズが制限をはるかに下回っていますが、テーブルにdecimal(26,8)列を1つ追加しようとすると、エラーが発生し、操作が失敗します。内部オーバーヘッドのバイト。」それだけ多くの列を持つ単一のテーブルを作成する方法はありますか? drop table t1 GO create table t1(c1 decimal(26, 8) null) with (data_compression = page) GO declare @i int = 2; declare @sql varchar(100); while @i <= 486 begin set @sql = 'alter table t1 add c' + convert(varchar, @i) + ' decimal(26, 8) null'; execute (@sql); set @i += …

1
奇妙な密度はサンプリングされた統計をもたらす
NCインデックスは、サンプリングとフルスキャンで推定すると、まったく異なる統計分布を取得します。サンプリングされたものは、奇妙な密度ベクトルを持っています。その結果、実行計画が不十分になります。 非クラスター化インデックスでサポートされているnull以外のFK列を含む、約2,700万行のテーブルがあります。テーブルは主キーでクラスター化されます。どちらの列もvarcharです。 FKカラムのフルスキャン統計更新により、通常の密度ベクトルが得られます。 All density Average Length Columns 6,181983E-08 45,99747 INSTANCEELEMENTID 3,615442E-08 95,26874 INSTANCEELEMENTID, ID つまり、INSTANCELEMENTID結合する個別の行ごとに約1.7行を読み取ることが期待されています。 ヒストグラムの一般的なビンは次のようになります。 RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS AVG_RANGE_ROWS FOOBAR 133053 10 71366 1,679318 ただし、サンプルの更新を行う場合(このテーブルのデフォルトのサンプル番号は230k行です)、奇妙なことが起こります。 4,773657E-06 45,99596 INSTANCEELEMENTID 3,702179E-08 95,30183 INSTANCEELEMENTID, ID 上の密度INSTANCEELEMENTIDは2桁大きくなりました。(ただし、両方のカラムの密度はかなり許容できる値に推定されています)。 ヒストグラムの典型的なビンは次のようになります。 RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS AVG_RANGE_ROWS FOOBAR 143870,4 766,2573 1247 115,3596 ZOTZOT 131560,7 1 …

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