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

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

2
RAMの増加、パフォーマンスの低下
セットアップ: Windows Server 2008 R2 SQL Server 2008 R2 SP1 240GB RAM TempDBは自動拡張なしの8x16GBデータファイル(合計128GB) 物理/スタンドアロンサーバー このサーバーは、ETL処理に使用されます。このサーバーに追加のRAMを追加しただけで、合計で240GBのRAMになります。SQL Serverサービスのみが実行されています。 メモリは、BIOS、OpenManage、およびWindowsで正常に表示されます。 70 / 100GBのメモリの最小/最大を使用するようにSQL Serverを構成した場合、問題はありません。ただし、それを120 / 150GBに増やすと、ETLプロセスの1つを実行すると次のエラーが発生します。 'PRIMARY'ファイルグループがいっぱいのため、データベース 'tempdb'のオブジェクト '<temporary system object:422234507706368>'に領域を割り当てることができませんでした 不要なファイルを削除するか、ファイルグループ内のオブジェクトを削除するか、ファイルグループにファイルを追加するか、ファイルグループ内の既存のファイルに対して自動拡張をオンに設定して、ディスク領域を作成します。(メッセージ1105、状態2、手順不明、行1) メモリ構成を変更する前に、この問題に遭遇したことはありません。元の70 / 100GBに再構成した後、このエラーは発生しません。 私が試したこと: TempDBデータファイルを自動拡張に設定します。これにより、ディスク容量に達するまでファイルが自動拡張され、失敗するだけです。 TempDBデータファイルをさらに追加します。示されているのと同じエラー。 TempDBのサイズを8x32GB(合計256GB)に増やします。 この問題の原因は何なのか途方に暮れています。

2
どの時点でインデックスが効率的になるか
テーブルにインデックスを追加すると検索が高速になり、挿入が遅くなるが、テーブルが大きい場合に限られると多くのリソースが見つかりました。これにより、設計上の決定であるトレードオフが生じますが、インデックスの使用が不合理になる前に、おおよそのテーブルサイズが必要です。(たとえば、10行はおそらくその制限をはるかに下回ります) この制限がどこにあるか、または私を正しい方向に向けるリソースを知っている人はいますか?

2
SQL ServerジョブでのトランザクションとTry-Catch
SQL Serverジョブの各ステップにはDML操作があります。更新を確保するために/挿入は、何かがうまくいかない場合にはロールバックされます、私はのデータ修正包まれている各ステップをにTRY CATCHしてTRANSACTIONブロック: BEGIN TRY BEGIN TRANSACTION [[INSERT/update statements]] ... IF @@TRANCOUNT > 0 BEGIN COMMIT TRANSACTION PRINT 'Successful.' END END TRY BEGIN CATCH SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState, ERROR_PROCEDURE() AS ErrorProcedure, ERROR_LINE() AS ErrorLine, ERROR_MESSAGE() AS ErrorMessage IF @@TRANCOUNT > 0 BEGIN ROLLBACK TRANSACTION …

3
SQL Serverリークトランザクション
ログスペースを解放していないように見えるTDS over TCPを介して約50のクライアントからアクセスされるデータベースがあります。プロセスの数は予想される50前後にとどまり、それらのいくつかは非常に長寿命(> 120日)です。 これで、データベースのログ領域に40 GB(データは14 GBのみ)、39 GBが解放されました。ドライブのスペースの制限により、私はもっと妥当なもの(10GBくらい)に縮小したいと思います。を実行するDBCC SHRINKFILE('db_log', 10000)と、ログの最後が使用中であるというエラーが返されます。 ログの最後へのアクセスを解放するために、次のようにしてデータベースをシングルユーザーモードにしようとしました。 ALTER DATABASE db SET SINGLE_USER WITH ROLLBACK IMMEDIATE GO ALTER DATABASE db SET MULTI_USER GO しかし、スクリプトは次のメッセージを数百回繰り返し返します。 Nonqualified transactions are being rolled back. Estimated rollback completion: 100%. これにより、どこかにコミットされていないトランザクションが残っていると思います。一度に多くのトランザクションを意図的に一度に開くプロセスについては知りません。そのため、これらのトランザクションは時間をかけて蓄積され、閉じられることはないと考えています。 質問:問題のプロセスまたはスクリプトを見つけるにはどうすればよいですか、またはログがリリースされないのはなぜですか? sys.dm_tran_active_transactions理解可能な目的で合理的な18のトランザクションを示しています。 sp_who私が知っているプロセスだけを示しています。 SQL Serverのバージョン: Microsoft SQL Server 2008 R2 (RTM) - …

2
ケースvs isnull vs合体
SQL Server 2012試験のドキュメントを読んでいるだけで、次の点がわかりました。 ケースvs isnull vs合体 今、私が知っているどのようにそれぞれのいずれかを使用するが、私は知らないWHEN各1を使用します。いくつかの体を明確にしてください。ありがとう。 Ps。試験問題のタグを付けていただけませんか?

2
SQL Server Filetableドキュメントのプロパティ
SQL Server 2012のFiletableを使用してドキュメントを保存し、セマンティック検索で検索しています。 すべてのドキュメントプロパティ(メタデータ)を一覧表示する方法があるかどうか疑問に思いました。フルテキスト検索でインデックスを作成し、ドキュメントのプロパティを検索する方法があります。次のステートメントを使用して、SQL Serverインデックスのプロパティのリストを作成できます。 SELECT * FROM sys.registered_search_properties; SQLまたはプログラムを使用して、このリストを拡張することもできます。 見つからなかったのは、実際の情報をリストする方法です。私が探しているのは次のようなリストです: 著者:Ruud van de Beeten タイトル: テスト文書 カスタムプロパティ:カスタム値 誰かが私を正しい方向に向けることができますか? 編集:ボブボーケミンが私の問題を説明するチケットを作成しました。DMVはプロパティ値をリストしていないため、プロジェクトで使用できません。 最終的にC#を使用して、OleDocumentPropertiesオブジェクトでカスタムプロパティを一覧表示しました。このオブジェクトは、Officeドキュメントからプロパティを読み取ることができます。私はより良い解決策を期待して、この質問を監視し続けます。

1
可用性グループはシームレスなフェイルオーバー(クエリの失敗なし)を提供できますか?
SQL Server 2012で可用性グループ機能をテストしており、プライマリサーバーがセカンダリサーバーにフェールオーバーするときに、約15秒のダウンタイムがあることがわかりました。この間に実行されたすべてのSQLクエリは、フェイルオーバーの移行が完了するまで失敗します。 これを0秒にして、フェールオーバーの移行中にクエリが失敗しないようにする方法はありますか? 言い換えると、失敗中に実行中のクエリを失敗せずにプライマリサーバーにリダイレクトする方法はありますか。フェイルオーバーの移行中に接続しますか? 現在、可用性グループに2台のサーバーをセットアップしています。

3
バックアップの復元が失敗する-ファイル「Db」を「{…} .mdf」に復元できません。WITH MOVEを使用して、ファイルの有効な場所を特定します
顧客から受け取ったバックアップファイルに対して復元コマンドを使用して復元しようとすると、次のエラーが発生します。 ディスクからデータベースSFDBを復元= N'C:\ Backup \ Backup.bak ' これを修正するために私が何ができるかについての考えはありますか?それはmdfを探しているので、私が持っているバックアップファイルはフルバックアップではなく増分バックアップであると想定できますか?それが、mdfを探しているのはなぜですか? 1)すべてのデータ(データベース全体)を提供したか、2)適切なデータを持っているか、適切なT-SQLコマンドを使用して復元を実行できるかどうかはわかりません。方法がわかりません。 助けていただければ幸いです。 Msg 5133, Level 16, State 1, Line 2 Directory lookup for the file "D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Db.mdf" failed with the operating system error 21(failed to retrieve text for this error. Reason: 15105). Msg 3156, Level 16, State 3, Line 2 …

2
リンクサーバーを参照するポータブルSQLを作成するにはどうすればよいですか?
リンクサーバーを参照するストアドプロシージャを持っています。手順全体のいくつかの場所で、次のようなものが得られます。 INSERT INTO [TableName] (...Columns...) SELECT ...Columns... FROM [ServerName\InstanceName].[Catalogue].[dbo].[TableName] WHERE TableNameID = @TableNameID この手順は、私の開発環境、テスト環境、およびライブ環境に存在します。 問題は、サーバー名が環境ごとに異なるため、プロシージャの各コピーが微妙に異なることです。これにより、スクリプト更新の展開の管理が面倒になります。 各環境で同じバージョンのプロシージャを実行できるように、プロシージャを移植可能にする方法はありますか? そうでない場合、スクリプトの展開を間違い/エラーに陥らなくするために私ができることはありますか?

4
SQLカウントクエリを高速化できるものは何ですか?
カウント(集計)SQLクエリを実行する場合、これら3つのデータベースシステムで実行時間を短縮できるものは何ですか?スピードアップできるものはたくさんあると思いますが(ハードウェアは1つです)、私は初心者のDBAなので、ここでいくつかの回答を得られると確信しています。約1億5700万行をSQL​​ Serverデータベースに移行しましたが、このクエリは永遠にかかります。しかし、私のソースのNetezzaデータベースでは、数秒かかります。 例えば: Netezza 6: SELECT COUNT(*) FROM DATABASENAME..MYTABLE Oracle 11g: SELECT COUNT(*) FROM MYTABLE SQL Server 2012: SELECT COUNT(*) FROM DATABASENAME.[dbo].[MYTABLE]

3
特定のテーブルでのロギングの無効化
SQL Server 2005を使用しています。集計情報を含む2つのテーブルがあります。情報は常に更新されており、1日にほぼ5GBのログデータが生成されます。(データベース全体よりも大きい!)ロールバックは本当に必要ないので、これらのテーブルのロギングを無効にしたいと思います。ただし、データベース内の他のテーブルにログオンし続けたいと思います。 データベース内の特定のテーブルのロギングを無効にすることは可能ですか?そうでない場合、2つのテーブルを同じスキーマに配置して、スキーマへのロギングを無効にできますか?2つのテーブルを別のデータベースに移動し、そこでログを無効にする唯一のオプションはありますか? 更新: これらのテーブルのアクティビティをログに記録する必要がない理由を説明します。 2つのテーブルにはGPSデータが含まれているため、かなり大きくなります。最初のテーブルは、フィールド内の6つのAndroidテーブルから生の場所をキャプチャしています。各タブレットからの新しいデータは5〜10秒ごとに送信されます。その情報は、locationA、locationB、travelTimeとして集約されます。最終的には、実際の運転データに基づいて、すべての場所間の移動時間を最短にすることが目標です。データは小都市のみのものであり、小数点第4位までしか正確ではないため、管理可能です。ただし、新しい生データが入力されると、更新が必要な移動時間が遅くなり、新しい移動データが挿入される必要があります。 生データが集約されると、パージされます。長い移動時間に戻ることはないので、これらのテーブルではロールバックはそれほど重要ではありません。

1
SSD上のSQL Server 2012のtempdb、mdf、ldfファイルの最適な配置?
これはおそらく非常に自由な質問であり、答えはさまざまである可​​能性がありますが、SSDについて話すときのSQL Server 2012のtempdb、mdf、およびldfファイルの最適な配置は何ですか? 新規購入前は、SQL Server 2012コアファイルとtempdbがインストールされた既存のSSDがあり、7200rpm HDDにmdf / ldfの両方がありました。次に、MDFとLDFを一方に配置するという当初の目的で、2つのSSDを購入しました。 しかし、それをさらに読み取ることから、SSDに関しては、mdfファイルとldfファイル用の個別の物理ディスクは実際には適用されません。正しい? だから、私は次のことを考えていました: SSD 1-SQL Server 2012コアファイルおよびWindows SSD 2-tempdb SSD 3-mdfおよびldf それが違いを生む場合、これは1つのデータベースのみに割り当てられるため、複数のデータベース間で競合は発生しません。 私の "考えている"セットアップは良いですか、それとも単に無駄になっていますか(つまり、tempdbを分離する理由はありません)。

3
SQL Server Management Studioですべてのクエリに対して一度接続する方法は?
SSMSは、プロジェクト内のすべてのクエリに対して接続するように要求します。プロジェクトでそれを使用するすべてのクエリに対して、接続ごとに1回だけ接続する方法はありますか? 以下の回答(2014年3月)では、質問に回答できません。まだ解決策を探しています。

1
クエリを最適化する方法
私はこれに似たデータベース構造を持っています、 CREATE TABLE [dbo].[Dispatch]( [DispatchId] [int] NOT NULL, [ContractId] [int] NOT NULL, [DispatchDescription] [nvarchar](50) NOT NULL, CONSTRAINT [PK_Dispatch] PRIMARY KEY CLUSTERED ( [DispatchId] ASC, [ContractId] 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 CREATE TABLE …

1
ユーザー「NT AUTHORITY \ ANONYMOUS LOGON」のログインに失敗しました。(MsDtsSrvr)
多くのインスタンスを含むクラスター環境があります。複数のインスタンスがssisを使用できるようにxmlファイルを変更しました。インスタンスがクラスター化されたssisと同じノードにある場合、すべてがうまく機能します。ただし、それらが異なるノード上にある場合、感覚喪失の問題が発生しているようで、資格情報が失われます。何らかの理由で、代わりに匿名ログオンを使用しようとします。ここに完全なエラーがあります: SSISサービス構成で指定されたSQLサーバーが存在しないか、利用できません。これは、コンピューターにSQL Serverの既定のインスタンスがない場合に発生する可能性があります。詳細については、Server 2005 Books Onlineのトピック「Integration Servicesサービスの構成」を参照してください。 ユーザー「NT AUTHORITY \ ANONYMOUS LOGON」のログインに失敗しました。(MsDtsSrvr) 誰もがこの問題について助けてくれるとありがたいです。 おかげで、

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