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

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

2
トランザクションログの再構築
トランザクションログファイルが(SQL Serverがシャットダウンされている間に)削除された非常に大きなデータベース(〜6TB)があります。 データベースの切り離しと再接続。そして トランザクションログファイルの削除の取り消し ...しかし、これまでのところ何も機能していません。 現在実行中です: ALTER DATABASE <dbname> REBUILD LOG ON (NAME=<dbname>,FILENAME='<logfilepath>') ...しかし、データベースのサイズを考えると、これを完了するにはおそらく数日かかります。 ご質問 上記のコマンドと次のコマンドに違いはありますか? DBCC CHECKDB ('<dbname>', REPAIR_ALLOW_DATA_LOSS) REPAIR_ALLOW_DATA_LOSS代わりに実行する必要がありますか? データベースを再構築できるようにデータが他のソースから派生していることは注目に値しますが、すべてのデータを再挿入するよりもデータベースを修復する方がはるかに迅速になると思われます。 更新 スコアを保持している場合:ALTER DATABASE/REBUILD LOGコマンドは約36時間後に完了し、報告しました: 警告:データベース 'dbname'のログが再構築されました。トランザクションの一貫性が失われました。RESTOREチェーンが破損し、サーバーは以前のログファイルのコンテキストを失ったため、それらが何であるかを知る必要があります。 DBCC CHECKDBを実行して、物理的な一貫性を検証する必要があります。データベースはdbo専用モードになっています。データベースを使用可能にする準備ができたら、データベースオプションをリセットし、余分なログファイルを削除する必要があります。 その後、DBCC CHECKDB成功しました(約13時間かかりました)。データベースバックアップの重要性(そしてプロジェクトマネージャーにサーバーへのアクセスを許可すること...)をすべて知ったとしましょう。

5
T-SQLでIFを使用すると、実行計画のキャッシングが弱くなるか壊れますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 t-SQLバッチでIFステートメントを使用すると、パフォーマンスが低下することが示唆されています。このアサーションを確認または検証しようとしています。SQL Server 2005および2008を使用しています。 アサーションは、次のバッチでのことです:- IF @parameter = 0 BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END 次の実行には別のブランチが必要な場合があるため、SQL Serverは生成された実行プランを再利用できません。これは、現在の実行で必要なブランチを既に決定できることに基づいて、SQL Serverが実行プランから1つのブランチを完全に削除することを意味します。これは本当ですか? さらに、この場合に何が起こるか:- IF EXISTS (SELECT ....) BEGIN SELECT ... something END ELSE BEGIN SELECT ... something else END どのブランチを実行するかを事前に決定できない場合

1
「NOT FOR REPLICATION」オプションを持つ主キー
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 6年前に移行され ました。 私は最近プロジェクトを引き継ぎましたが、ほとんどのテーブルで主キーにプロパティ " NOT FOR REPLICATION" があることを発見しました。 私はDBAではありませんが、ほとんどのデータベースでは、主キーのないレコードは破損していると考えられます。ほとんどの場合、これらのレコードの主キーはどこかで外部キーとして使用されます。 これは以前の開発者(会社で働いていなかった)側のエラーですか、それとも他のロジックが関係していますか?実稼働環境ではレプリケーションさえ使用しないため、これは実際には深刻な問題には影響しませんが、気付いていないこれらのディレクティブをすべて削除する他の副作用があるかどうか疑問に思っていました。 私はこのトピックに関連する多くの検索用語で多くの有用なヒットを見つけていないので、これは私が逆にする必要がある単なる愚かなエラーであることをかなり確信しているので、この質問は本当に私の妄想を和らげることです。

5
リンクサーバーでCASE式に10ブランチという制限があるのはなぜですか?
なぜこのCASE式は: SELECT CASE column WHEN 'a' THEN '1' WHEN 'b' THEN '2' ... c -> i WHEN 'j' THEN '10' WHEN 'k' THEN '11' END [col] FROM LinkedServer.database.dbo.table この結果を生成しますか? エラーメッセージ:メッセージ8180、レベル16、状態1、行1 ステートメントを準備できませんでした。メッセージ125、レベル15、状態4、行1のケース式はレベル10にのみネストできます。 CASE10個以上の「ブランチ」がありますが、ここには明らかにネストされた式はありません。 もう一つの奇妙な。このインラインテーブル値関数は、同じエラーを生成します。 ALTER FUNCTION [dbo].[fn_MyFunction] ( @var varchar(20) ) RETURNS TABLE AS RETURN ( SELECT CASE column WHEN 'a' …

4
sql-serverでデータベースの一部をバックアップおよび復元することは可能ですか?
クライアントサイトからサイトに定期的に転送するsql-server 2005データベースがあります。直接接続がなく、Webベースのファイル転送アプリケーションを介してファイルを転送する必要があるため、これには長い時間がかかります。データベースは現在約10GBですが、すべてのデータを必要とするわけではありません-ほとんどは監査テーブルと、再生成可能な計算値を保持するテーブルにあります。 監査テーブルを保持するファイルグループを作成することを検討しましたが、プライマリファイルグループをバックアップおよび復元できることを望んでいました。うまくバックアップできますが、復元時に同じデータベースに復元していないというエラーが表示されます。ファイルグループを使用して、データベースの一部を別のサーバーに復元することはできますか?これを行うためのより良い方法はありますか?

3
SQL Serverログファイルの縮小はパフォーマンスにどのように影響しますか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 サイズが2GBのデータファイルを持つSQL Server 2008データベースがありますが、ログファイルは8GBを超えています。2008年以前のデータベースでは、「バックアップログ」とTRUNCATE_ONLYオプションを使用できましたが、2008以降のデータベースでは使用できなくなりました。 ログファイルを切り捨てるスクリプトがあります。 USE [MyDatabase] GO ALTER DATABASE [MyDatabase] SET RECOVERY SIMPLE WITH NO_WAIT DBCC shrinkfile('MyDatabase_log', 1) ALTER DATABASE [MyDatabase] SET RECOVERY FULL WITH NO_WAIT GO これはログファイルを完全に切り捨てますが、私の質問は次のとおりです。これはパフォーマンスに影響しますか? 私は毎日2回のフルバックアップを実行しているため、データのロールフォワードに関する限り、ログは実際には必要ありません。



2
外部キーはデッドロックを引き起こし、READ COMMITTED SNAPSHOTを妨げることができますか?
これは次の質問です:https : //stackoverflow.com/questions/7684477/is-it-possible-to-set-transaction-isolation-level-snapshot-automatically 大規模なレポートを同時に実行すると、ASP.NETアプリケーションでデッドロック/タイムアウトが発生しますREAD_COMMITTED_SNAPSHOT ON。 そこで、2つの質問があります。 トランザクション分離レベルスナップショットが期待どおりに機能しているかどうかを確認するにはどうすればよいですか? 外部キー(レポートテーブルへのWebアプリケーションのテーブル内)がデッドロックの原因であると想定しています。私はこの興味深い記事を見つけました: 注 SQL Serverは、トランザクションが読み取りコミットスナップショット(行バージョン管理を使用して読み取りコミット)またはスナップショット分離レベルを使用している場合でも、外部キーの検証時に共有ロックを取得します。これらのトランザクション分離レベルが使用されている場合、トランザクションのデッドロックグラフを調べるときは、このことに注意してください。共有ロックが表示される場合は、外部キーによって参照されているオブジェクトでロックが取得されているかどうかを確認してください。 FKがデッドロック/タイムアウト状況に本当に責任があるかどうかを確認するにはどうすればよいですか?つまり、デッドロックを防ぐためにそれらの外部キーを削除できますか? 注:デッドロックを引き起こすテーブルからの読み取りのみです。 このトピックに関するご意見は大歓迎です。 編集 ここはDeadlock-Graphです。誰かがデッドロックの原因を理解するのを助けてくれるかもしれません。2つのトランザクションが同じテーブル(1つの更新と1つの挿入、挿入はStored-Procedureとして)を書きたいときに、Webアプリケーションによってのみ実行されるレポートなしで発生したようです。ページロックを取得する理由と、行ロックのみを有効にする方法 Insert-SPはすでにを使用していTRANSACTION ISOLATION LEVEL REPEATABLE READます。 2つのトリガー(1つの更新と1つの挿入)がデッドロックの原因であると強く疑っています。挿入トリガーは次のとおりです。 CREATE TRIGGER [dbo].[CreateRMAFiDates] ON [dbo].[RMA] AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE RMA SET [fiCreationDate]=(SELECT idDate FROM tdefDate WHERE CONVERT(VARCHAR, INSERTED.Creation_Date, 112) = tdefDate.Text), [fiPopDate]=(SELECT idDate FROM …

4
パフォーマンスに影響を与えずに大規模なSQL Serverデータベースをバックアップするにはどうすればよいですか?
クエリの実行が遅い、または早朝にタイムアウトになるというレポートがありましたが、これに影響を与えると思われる実行中のジョブは、データベースのバックアップジョブだけです。 データベース自体は約300 GBで、バックアップジョブは午前4時30分に開始され、午前7時過ぎまで終了しません。バックアップジョブの現在の構文は次のとおりです。 BACKUP DATABASE [DatabaseName] TO DISK = N'E:\Database Backups\DatabaseName.Bak' WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak', NOSKIP, STATS = 10, NOFORMAT E:\ データベースとデータベースバックアップの両方を保持するサーバー上のパーティションです。 また、これは専用のスタンドアロンサーバーではなく、仮想サーバーであることにも注意してください。仮想サーバーに切り替えた直後に、バックアッププロセス中に速度低下に関する苦情が寄せられるようになったので、関連があると思います。 このバックアップジョブを実行して、実行中のクエリのパフォーマンスに影響を与えない方法はありますか? SQL Server 2005を使用しています

2
SQL 2005 [SQL_Latin1_General_CP1_CI_AS]から2008への移行-「後方互換性」を使用して機能を失う
SQL 2005 [インスタンスとDBの照合順序SQL_Latin1_General_CP1_CI_AS]からSQL 2008 [デフォルトは]に移行していますLatin1_General_CI_AS。 SQL 2008 R2のインストールを完了し、デフォルトのLatin1_General_CI_AS照合を使用しましたが、データベースの復元はまだSQL_Latin1_General_CP1_CI_ASです。例外的な問題が発生しました- Latin1_General_CI_ASデータベースが存在していた ときの#tempテーブル SQL_Latin1_General_CP1_CI_ASと、これが現在の場所です-落とし穴についてのアドバイスが必要です。 SQL 2008 R2のインストールでは'SQL Collation, used for backwards compatibility'、2005データベースと同じ照合を選択するオプションがある場所で使用するインストールオプションがありますSQL_Latin1_General_CP1_CI_AS。 これにより、#tempテーブルで問題が発生することはなくなりますが、落とし穴はありますか? SQL 2008の「現在の」照合を使用しないことにより、あらゆる種類の機能または機能が失われますか? 2008年からSQL 2012に移行したとき(2年以内など)はどうですか?問題はありますか? ある時点で行くことを余儀なくされLatin1_General_CI_ASますか? 一部のDBAのスクリプトが完全なデータベースの行を完了し、新しい照合を使用してデータベースに挿入スクリプトを実行することを読みました。



2
SQL Serverで列をintに更新するときにトランザクションログがいっぱいになるのを回避する方法
というSQL Server 2005テーブルBRITTNEY_SPEARS_MARRIAGESがあり、次の列があります。 MarrigeId tinyint, HusbandName varchar(500), MarrigeLength int 今、私は別のテーブルを持っています BRITTNEY_SPEARS_MARRIAGE_STORIES StoryId int, MarriageId tinyint, StoryText nvarchar(max) 問題は、私たちが更新したいですMarrigeIdに列をintからtinyint。私たちは、ブリトニーがすべてのことを言って成し遂げる前にたくさんの結婚をするだろうと感じています。 現在、BRITTNEY_SPEARS_MARRIAGE_STORIESテーブルには1800万行があり(女の子に問題があるので)、更新を行うとトランザクションログがいっぱいになり、SQL Serverボックスが停止します。 どうすればこれを回避できますか? とにかく「SQL Serverをこの列を更新して大きくします。このSQL Serverで信頼してください。すべての検証を試みている間、トランザクションログをいっぱいにしないでください」と言うことはできますか?

3
パーティションキーを更新して、パーティション間で行を移動できますか?
これはかなり単純な質問だと思いますが、実際にはこれに対する答えを見つけるのに苦労しました。 質問:パーティション列を更新してパーティションの境界を越えるだけで、パーティションテーブル内のデータ行をあるパーティションから別のパーティションに移動できますか? たとえば、パーティションキーを持つテーブルがある場合: CREATE TABLE SampleTable ( SampleID INT PRIMARY KEY, SampleResults VARCHAR(100) NOT NULL, ) 主キーにマップするパーティション関数を使用して: CREATE PARTITION FUNCTION MyPartitionFunc (INT) AS RANGE LEFT FOR VALUES (10000, 20000); SampleIDを1から(たとえば)500,000に変更して、最初のパーティションから3番目のパーティションに行を移動できますか? 注:どちらもパーティション分割をサポートしているため、SQL Server 2005と2008の両方としてこれをタグ付けしています。彼らはそれを異なって扱いますか?

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