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

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

3
テーブル値関数のアクセス許可を付与する方法
私はそれを正しくやっていますか...? 私はお金を返す関数を持っています... CREATE FUNCTION functionName( @a_principal money, @a_from_date datetime, @a_to_date datetime, @a_rate float ) RETURNS money AS BEGIN DECLARE @v_dint money set @v_dint = computation_here set @v_dint = round(@v_dint, 2) RETURN @v_dint END GO Grant execute on functionName to another_user Go これがiTVFに変換できるかどうか疑問に思っていますか? 私はこれを試しましたが、エラーが発生しました: CREATE FUNCTION functionName ( @a_principal money, @a_from_date …

4
sys.databasesのいくつかの列の照合はどうなっていますか?
2005年から2012年までのさまざまなバージョンのSQL ServerにUNPIVOT含まれるさまざまな列でを実行しようとしていますsys.databases。 UNPIVOT次のエラーメッセージで失敗しています。 メッセージ8167、レベル16、状態1、行48 列「CompatibilityLevel」のタイプは、UNPIVOTリストで指定された他の列のタイプと競合します。 T-SQL: DECLARE @dbname SYSNAME; SET @dbname = DB_NAME(); SELECT [Database] = unpvt.DatabaseName , [Configuration Item] = unpvt.OptionName , [Configuration Value] = unpvt.OptionValue FROM ( SELECT DatabaseName = name , RecoveryModel = CONVERT(VARCHAR(50), d.recovery_model_desc) , CompatibilityLevel = CONVERT(VARCHAR(50), CASE d.[compatibility_level] WHEN 70 THEN 'SQL Server 7' …

3
SQL Server Management Studioのオートコンプリートを抑制する
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 クエリの入力中にSQL Server Management Studioのオートコンプリートを一時的に抑制する方法はありますか?オートコンプリートを完全に無効にしたくないのは、特定の単語を入力するときにキーを押したままにして、邪魔にならないようにするだけです。 たとえば、次のクエリがあったとします SELECT Foo, Foo2 FROM SomeTable 入力してFooからスペースバーを押すと、SQL Server Management Studioのオートコンプリートが開始され、完了FooしFooBarます。

3
最小のダウンタイムで大きなテーブルにrowversion列を追加するにはどうすればよいですか
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 SQL Server 2008以降を使用して、rowversion列を大きなテーブルに追加したいのですが、単純に ALTER TABLE [Tablename] ADD Rowversion [Rowversion] NOT NULL その後、更新のためにテーブルが長すぎます。 このダウンタイムを減らすためにどのような戦略を使用できますか?何でも検討します。もちろん、単純であればあるほど良いのですが、どのような戦略も検討します。 私の考えでは、最後の手段として、トリガーによって維持されるコピーステージングテーブルを維持してから、ステージングテーブルを元のテーブルにsp_renameできると考えています。しかし、私はもっとシンプルで簡単なものを望んでいます。

1
永続化された計算列を選択すると、SQL Serverが「Compute Scalar」になるのはなぜですか?
SELECTこのコードの3つのステートメント USE [tempdb]; GO SET NOCOUNT ON; CREATE TABLE dbo.persist_test ( id INT NOT NULL , id5 AS (id * 5) , id5p AS (id * 5) PERSISTED ); INSERT INTO dbo.persist_test (id) VALUES (1), (2), (3); SELECT id FROM dbo.persist_test; SELECT id5 FROM dbo.persist_test; SELECT id5p FROM dbo.persist_test; DROP …


3
varchar(255)またはvarchar(256)?
テーブルを使用する必要がありますvarchar(255)かvarchar(256)?列の長さ、またはメタデータの保存に1バイトが使用されていると聞きました。 この時点でそれはもう重要ですか? 私はインターネット上でいくつかの投稿を見ましたが、それらはOracleとMySQLに適用されます。 Microsoft SQL Server 2016 Enterprise Editionがありますが、この環境にどのように適用されますか? ここで、たとえば、テキストの説明を256ではなく255文字に保つようにクライアントに指示した場合、違いはありますか?私が読んだこと「DBMSは255文字の最大長で、フィールド内のデータの長さを示すために単一バイトを使用することを選択できます。制限が256以上の場合、2バイトが必要になります。」これは本当ですか?

1
SQL Server 2019の結果セットキャッシングを有効にするにはどうすればよいですか?
SQL Server 2019 CTP 2.3は、is_result_set_caching_onを含むいくつかの新しい列をsys.databasesに追加しました。 SQL Server 2019の新機能やALTER DATABASEページにはまだ記載されていません。 私は笑いのために加速データベース復旧と同じ構文を使用してみました: ALTER DATABASE StackOverflow2013 SET RESULT_SET_CACHING ON; しかし、運がない: Msg 5058, Level 16, State 12, Line 8 Option 'RESULT_SET_CACHING' cannot be set in database 'StackOverflow2013'.

5
SQL Serverのクラッシュ耐性を改善できますか?
定期的に電源が失われるSQL Server(2008 SP4および2016 SP1)を実行しているPCがあります。明らかに、これによりSQL Serverデータベースの(インデックス)破損が発生する場合があり、後で復元する必要があります。 SQL Serverはそのようなシナリオ向けに設計されていないことを認識しています。正しい解決策は、電力損失の原因を修正することです(興味がある場合は、以下で詳しく説明します)。それにもかかわらず、電力損失時のデータベース破損のリスクを減らすために設定できるSQL Serverのチューニングオプションはありますか? 背景:「PC」は、フォークリフトに搭載されたWindowsタブレットです。ユーザーがフォークリフトをオフにすると、タブレットの電源が切れます。私たちは、フォークリフトをオフにする前にWindowsを適切にシャットダウンするようにユーザーに教えようとしましたが、失敗しました(ほとんどの場合、それをオフにするだけで機能するためです)。現在、電力損失時にタブレットにシャットダウンするように信号を送るUPSを追加するなど、他のオプションも調査しています。
20 sql-server  crash 

2
十分な計画が見つからないクエリが見つかりました
SQL Server 2012データベースがあります。私はReason for early termination of statement optimizationいくつかのクエリの価値に気付き、すべてが与えましたGood Enough Plan Found。私の質問は次のとおりです。 「ステートメント最適化の早期終了の理由」のすべての可能なタイプは何ですか。msdnでこれを検索しましたが、値の完全なリストを取得できませんでした。 Good Enough Plan Found以外の理由で最適化が終了したすべてのクエリをリストするDMVまたは拡張イベントはありますか?可能性の完全なリストを掲載していない次の2つの記事を参照しました。[また、私のデータベースでは異なる結果が得られます]。 検出:クエリコンパイルタイムアウト 十分ではないクエリプランの特定

4
「時々」遅いクエリの診断に関するアドバイス
カバリングインデックスを介してインデックス付きビューから結果を返すストアドプロシージャがあります。通常、高速(約10ミリ秒)で実行され、最大8秒まで実行されることもあります。 ランダム実行の例を次に示します(注:これは低速ではありませんが、クエリテキストは、渡される値を除いて同じです)。 declare @p2 dbo.IdentityType insert into @p2 values(5710955) insert into @p2 values(5710896) insert into @p2 values(5710678) insert into @p2 values(5710871) insert into @p2 values(5711103) insert into @p2 values(6215197) insert into @p2 values(5710780) exec ListingSearch_ByLocationAndStatus @statusType=1,@locationIds=@p2 スプロックは次のとおりです。 ALTER PROCEDURE [dbo].[ListingSearch_ByLocationAndStatus] @LocationIds IdentityType READONLY, @StatusType TINYINT AS BEGIN SET NOCOUNT ON; …

2
連結演算子が入力よりも少ない行を推定するのはなぜですか?
次のクエリプランスニペットでは、Concatenation演算子の行推定値はである必要があること~4.3 billion rows、またはその2つの入力の行推定値の合計であることは明らかです。 しかし、の推定値は~238 million rows、最適につながる、生成されるSort/ Stream AggregatetempdbのにデータのGB数百をこぼし戦略。この場合の論理的に一貫した推定は、を生成しHash Aggregate、流出を除去し、クエリパフォーマンスを劇的に改善します。 これはSQL Server 2014のバグですか?入力よりも低い見積もりが合理的である有効な状況はありますか?どのような回避策が利用可能ですか? ここで完全なクエリプラン(匿名化)が。出力QUERYTRACEON 2363または類似のトレースフラグを提供するためにこのサーバーにsysadminアクセスすることはできませんが、役立つ場合は管理者からこれらの出力を取得できる場合があります。 データベースは互換性レベル120にあるため、新しいSQL Server 2014 Cardinality Estimatorを使用しています。 統計は、データがロードされるたびに手動で更新されます。データ量を考えると、現在デフォルトのサンプリングレートを使用しています。より高いサンプリングレート(またはFULLSCAN)が影響を与える可能性があります。

1
LIKE N '% %'の検索がUnicode文字に一致し、=N' 'が多くに一致するのはなぜですか?
DECLARE @T TABLE( Col NCHAR(1)); INSERT INTO @T VALUES (N'A'), (N'B'), (N'C'), (N'Ƕ'), (N'Ƿ'), (N'Ǹ'); SELECT * FROM @T WHERE Col LIKE N'%�%' 返品 Col A B C Ƕ Ƿ Ǹ SELECT * FROM @T WHERE Col = N'�' 返品 Col Ƕ Ƿ Ǹ 以下ですべての可能なダブルバイト「文字」を生成=すると、LIKE N'%�%'バージョンがそれらの21,229に一致し、すべてのバージョンに一致することがわかります(同じ結果でいくつかの非バイナリ照合を試しました)。 WITH T(I, N) AS …

1
GUIを使用したデータベースの復元-復元するファイルが間違っています
SSMSのグラフィックインターフェイスをいじり、「復元」タスクのオプションを検討しています。 「スクリプトを生成する」をクリックすると、クエリの最初の行が次のようになります。 RESTORE DATABASE [MyDatabase] FROM DISK = N'Server_Patch\Database_name_LOGSHIPPING.BKP' WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 5 ( and a lot of log backups for point in time ) OK、問題ありませんが、このデータベースの毎日のバックアップを行っています。これDatabase_name_LOGSHIPPING.BKPは、1か月前にログ配布用に作成したファイルの名前でした。 SSMSグラフィックインターフェイスを使用してバックアップを復元しようとすると、このバックアップファイルを指すのはなぜですか?このファイルはもうありません。 MSSQLTIPSのこのクエリを使用すると、このデータベースのすべてのバックアップを確認できます。 SELECT CONVERT(CHAR(100), SERVERPROPERTY('Servername')) AS Server, msdb.dbo.backupset.database_name, msdb.dbo.backupset.backup_start_date, msdb.dbo.backupset.backup_finish_date, msdb.dbo.backupset.expiration_date, CASE msdb..backupset.type WHEN 'D' THEN 'Database' WHEN 'L' …

1
サービスブローカーはバックアップされ、現在受信中ですが、処理していないようです
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 4年前に移行され ました。 イベント通知に問題がある。メッセージが送信されるマシン/ドライブ/データベース(受信者)では、誰も見ていないときにドライブがいっぱいになったため、1日中バックアップされています。 ドライブのスペースを解放したので、キューへのメッセージを受け入れていますが、メッセージを処理しているようには見えません-キューには現在2,200万のメッセージがあり、成長していますが(!)。キューが有効になっています: is_activation_enabled = 1 is_receive_enabled = 1 is_enqueue_enabled = 1 アクティブ化されたSPはactivation_procedureに表示されますが、SP_WHOISACTIVE、アクティブなリーダーはていません。 ドライブを再び吹き消す前に、何が間違っていますか?メッセージを処理またはフラッシュするにはどうすればよいですか?前もって感謝します。 更新 1つの考え-私が持っているのでis_enqueue_enabled、すべてのメッセージを処理できるまですべてのメッセージを保存しているのでしょうか?もしそうなら、それを安全にオフにできますか? CREATE PROCEDURE [dbo].[Parse_EN_Messages] AS --mdb 2012/09/05 version 1.2 -- With apologies and thanks to Remus Rusanu, Jonathon Kehayias, Mladen Prajdic, and Jasper Smith for writing -- about EN, answering questions, …

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