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

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

2
SQLステートメントは、SQL Serverの単一セッション内で同時に実行できますか?
一時テーブルを使用するストアドプロシージャを作成しました。SQL Serverでは、一時テーブルはセッションスコープであることを知っています。ただし、セッションで何ができるかについての明確な情報を見つけることができませんでした。特に、このストアドプロシージャが1つのセッションで2回同時に実行できる場合、2つの実行が一時テーブルを共有するため、そのプロシージャ内のトランザクションには非常に高い分離レベルが必要です。

5
IsDeleted(ソフト削除)を強制的に実装する場合の適切なインデックスアーキテクチャは何ですか?
現在、完全に機能する既存のデータベースとアプリケーションがあります。この時点でアーキテクチャを変更することはできません。今日、データベース内の各テーブルには、「IsDeleted」NOT NULL BITフィールドがあり、デフォルトは「0」です。アプリケーションがデータを「削除」すると、IsDeletedフラグが1に更新されます。 私が理解できないのは、各テーブルのインデックスの構成方法です。現在、すべてのquery / join / etcは常にIsDeletedチェックを実装しています。開発者が従わなければならない標準です。そうは言っても、各テーブルのクラスター化プライマリキーインデックスをすべて変更して、プライマリキーとIsDeleted BITフィールドを含める必要があるかどうかを判断しようとしています。また、すべてのquery / join / etcから。IsDeletedチェックを実装する必要がありますが、すべての単一のインデックス(非クラスター化)がIsDeletedフィールドをインデックスの最初のフィールドとして含むべきであるという適切な仮定ですか? もう1つの質問は、フィルター選択されたインデックスに関するものです。「WHERE IsDeleted = 0」などのインデックスにフィルターを適用して、インデックスのサイズを小さくできることを理解しています。ただし、すべての結合/クエリはIsDeletedチェックを実装する必要があるため、(結合/クエリでIsDeleted列が使用されるため)フィルター選択されたインデックスが使用されないようにしますか? 私は、IsDeletedアプローチを変更する能力がないことを忘れないでください。

3
IF EXISTSでクエリをラップすると非常に遅くなる
私は以下のクエリを持っています: select databasename from somedb.dbo.bigtable l where databasename ='someval' and source <>'kt' and not exists(select 1 from dbo.smalltable c where c.source=l.source) 上記のクエリは3秒で完了します。 上記のクエリが値を返す場合、ストアドプロシージャを終了する必要があるため、次のように書き直しました。 If Exists( select databasename from somedb.dbo.bigtable l where databasename ='someval' and source <>'kt' and not exists(select 1 from dbo.smalltable c where c.source=l.source) ) Begin Raiserror('Source missing',16,1) Return …


3
SQL Serverがインデックスを無視するのはなぜですか?
CustPassMaster16列のテーブルがありCustNum varchar(8)、その1つがであり、indexを作成しましたIX_dbo_CustPassMaster_CustNum。SELECTステートメントを実行すると: SELECT * FROM dbo.CustPassMaster WHERE CustNum = '12345678' インデックスを完全に無視します。これは、CustDataMasterもう少し多くの列(55)を持つテーブルがあり、そのうちの1つが混乱しているためですCustNum varchar(8)。IX_dbo_CustDataMaster_CustNumこのテーブルのこの列()にインデックスを作成し、実質的に同じクエリを使用します。 SELECT * FROM dbo.CustDataMaster WHERE CustNum = '12345678' そして、作成したインデックスを使用します。 この背後に特定の理由はありますか?なぜインデックスを使用しますが、インデックスを使用しCustDataMasterませんCustPassMasterか?列数が少ないためですか? 最初のクエリは66行を返します。2番目の場合、1行が返されます。 また、追加のメモ:CustPassMaster4991レコードがあり、CustDataMaster5376レコードがあります。これがインデックスを無視する理由になりますか?CustPassMasterまた、同じCustNum値を持つ重複レコードもあります。これは別の要因ですか? この主張は、両方のクエリの実際の実行計画の結果に基づいています。 CustPassMaster(未使用のインデックスを持つもの)のDDLは次のとおりです。 CREATE TABLE dbo.CustPassMaster( [CustNum] [varchar](8) NOT NULL, [Username] [char](15) NOT NULL, [Password] [char](15) NOT NULL, /* more columns here */ [VBTerminator] [varchar](1) NOT NULL …

6
毎月第3金曜日を決定する
SQL Serverの「1.1.1996-30.8.2014」の日付範囲の「各月の第3金曜日」である日付を決定する必要があります。 私はの組み合わせを使用する必要があり期待DENSE_RANK()してPARTITION BY()セット「ランク= 3」に。しかし、私はSQLが初めてであり、正しいコードを見つけることができません。

2
IDENTITY列の予期しないギャップ
1から始まり1ずつ増加する一意の注文番号を生成しようとしています。このスクリプトを使用してPONumberテーブルを作成しています。 CREATE TABLE [dbo].[PONumbers] ( [PONumberPK] [int] IDENTITY(1,1) NOT NULL, [NewPONo] [bit] NOT NULL, [DateInserted] [datetime] NOT NULL DEFAULT GETDATE(), CONSTRAINT [PONumbersPK] PRIMARY KEY CLUSTERED ([PONumberPK] ASC) ); このスクリプトを使用して作成されたストアドプロシージャ: CREATE PROCEDURE [dbo].[GetPONumber] AS BEGIN SET NOCOUNT ON; INSERT INTO [dbo].[PONumbers]([NewPONo]) VALUES(1); SELECT SCOPE_IDENTITY() AS PONumber; END 作成時に、これは正常に機能します。ストアドプロシージャが実行されると、目的の数から始まり、1ずつ増加します。 奇妙なことは、コンピューターをシャットダウンまたは休止状態にした場合、次にプロシージャを実行すると、シーケンスがほぼ1000ずつ進んだことです。 以下の結果を参照してください。 数字が8から1002にジャンプしたことがわかります。 …

3
SQL Serverの互換モードを100から110に変更することの意味
MydatabaseSQL Server 2008 R2でデータベースを作成しています。SQL Server 2012にアップグレードしました。 私はパーセンタイルを計算するために以下のクエリを実行しようとしました select Distinct [KEY],PERCENTILE_CONT(0.25) within group(order by EachPrice) OVER(Partition By [KEY]) As Q1,PERCENTILE_CONT(0.50) within group(order by EachPrice) OVER(Partition By [KEY]) As Q2, PERCENTILE_CONT(0.75) within group(order by EachPrice) OVER(Partition By [KEY]) As Q3, PERCENTILE_CONT(1) within group(order by EachPrice) OVER(Partition By [KEY]) As Q4 from Mydatabase …

2
SQL Server 2012の新しいDB名へのバックアップの復元
2008年に、復元ウィザードの[接続先データベース]フィールドの名前を変更することで、DBの新しいコピーにバックアップを復元できることを覚えているようです。これにより、新しいDBが作成されます。これは、元のDBのコピーであり、必要な時点に復元されます。私は、SQL 2012でこれを行う方法を理解していませんでした。 今、私は(アーロン・バートランドのおかげで)これは実際には変わらなかったことを理解し、2012年はこの戦略がそもそも悪い考えであったことを実際に私に明らかにしている! そのため、私がする必要があるのは、バックアップファイルを使用して、既存のデータベース「MyDB」から新しいデータベース「MyDB_Copy」を作成することです。毎晩の完全バックアップ(.bak)と15分ごとのTLog(.trn)があります。既存の「MyDB」が「ライブ」であるため、まったく影響を受けたり触れられたりしたくない。 メインのフルバックアップファイルからMyDB_Copyを作成した後、特定の時点に戻すために、数十個のTLogバックアップを復元する必要があります。

7
WITH REPLACEを使用してバックアップを復元しているときのエラー3154
コンピューターにSQL 2012 SP1がインストールされています。データベースのバックアップを作成しましたtest.bak。 test2同じデータベースと同じ名前のデータベースがありますが、データが変更されました。 データベースをtest.bak介して復元したいtest2。 私は常にエラーが発生しています: エラー3154:バックアップセットには、既存のデータベース以外のデータベースのバックアップが含まれています。 私は試した: 私は右クリックしました test2 -> Restore database -> From device 選択test.bakして確認しましWith Replaceたが、エラーが発生します。 次に、右クリックしてみました test2 -> Restore file and filegroups 選択test.bakして確認しましWith Replaceたが、エラーが発生します。 古いデータベースを削除してから正しい名前でバックアップを復元できますが、SQL 2008を使用していたときは、既存のデータベースを復元しても問題はありませんでした。 SQL2012を使用しているため、このエラーが頻繁に発生するようです。


7
DTSインポート/エクスポートウィザードを使用してデータをインポートするときにFK制約を処理するにはどうすればよいですか?
SQL Serverのインポートおよびエクスポートウィザードを使用して、運用データベースから開発データベースにデータをコピーしようとしていますが、「INSERTステートメントがFOREIGN KEY制約と競合しています」というエラーで失敗します。 FK制約の場合、ドロップ制約を追加する/ constratスクリプトを追加することなく、これに対処する簡単な方法はありますか? 編集:私はちょうど私が実行しているものであるSQL ServerのWeb版では、DTSはあなたがパッケージを保存することはできませんことがわかりました。

3
パフォーマンスを低下させるKey Lookup(クラスター化)オペレーターを排除
実行計画でキー検索(クラスター化)演算子を削除するにはどうすればよいですか? テーブルにはtblQuotes既にクラスター化インデックス(QuoteID)と27個の非クラスター化インデックスがあるため、これ以上作成しないようにしています。 私QuoteIDはクエリにクラスター化インデックス列を入れて、それが役立つことを願っていますが、残念ながらまだ同じです。 実行計画はこちら。 またはそれを見る: これは、キールックアップオペレーターによるものです。 クエリ: declare @EffDateFrom datetime ='2017-02-01', @EffDateTo datetime ='2017-08-28' SET NOCOUNT ON SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED IF OBJECT_ID('tempdb..#Data') IS NOT NULL DROP TABLE #Data CREATE TABLE #Data ( QuoteID int NOT NULL, --clustered index [EffectiveDate] [datetime] NULL, --not indexed [Submitted] [int] NULL, [Quoted] …


2
SQL Serverの新しいバージョンは不安定ですか?
データベースアーキテクトは、SQL Server 2014には2012年のパフォーマンスと安定性の利点がないため、2012年よりもSQL Server 2014の選択が適切ではないとクライアントに説明しました。私が読んだことはすべてこれと矛盾します。 アーロン・バートランド氏はまったく正反対であり、私がMSから読んだすべてのホワイトペーパーも同意しています。2014年は強化され、2012年に人々が抱えていたAGの問題のいくつかを解決しました。 2012年よりも2014年を選択した場合、見落としている大きな欠点はありますか?

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