データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

3
BlockOnPossibleDataLossを無視するsqlpackage.exe?
BlockOnPossibleDataLossをfalseに設定したdacpacがありますが、sqlpackage.exeで実行すると展開がブロックされ、「列[a]が削除されているため、データ損失が発生する可能性があります。」 ただし、まったく同じ展開プロファイルを使用してVisual Studio 2012から発行すると、それが実行されます。

2
600GBテーブルのインデックス付きキーデータ型をINTからBIGINTに変更する最速の方法
600GB MySQLテーブルでデータ型をINTからBIGINTに変更する必要があります。列には一意のインデックスがあります。私は無署名のINTで良いかもしれませんが、それを変更するか、BIGINTを変更することはほとんど同じ痛みだと思います。テーブルのエンジンはInnoDBです。簡単になるもの: 他の机 構造のコピーと INSERT INTO (SELECT *) テーブルのダンプとダンプファイルテーブル定義の変更 他に何か? 更新:要求どおり、MySQLバージョン5.5.15、外部キーなし、テーブル作成: CREATE TABLE `tbl` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `created_at` datetime NOT NULL, `tid` bigint(20) NOT NULL, `t` varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL, `f` tinyint(1) NOT NULL, `i_id` bigint(20) NOT NULL, `ir_id` …

1
トランザクションが「コミット」されている場合、確実に保存されますか?
トランザクションが正常にコミットされた場合、データベースとログファイルに書き込まれたことを100%確認できますか?データが保存されていることを確認できますか? 今日、ログファイルはドライブの制限に達し、多くのエラーが発生しました。さらに、他のいくつかのサービスがクラッシュしました。ディスクを増やし、サーバーを再起動しました。 起動時に、サーバーは「データベースの回復」を行いました。すべてが再び正常に動作することを確認できますか?

2
外部キーとしての複合主キーの効率
重複がテーブルに入力されないようにするために使用される複合主キー(4列で構成される)を持つテーブルがあります。このテーブルのキーを外部キーとして参照する必要がある新しいテーブルが必要になりました。 私の質問は、どのアプローチがルックアップ速度にとってより効率的かです: 1)4列すべてを含む新しいテーブルを作成し、それらをすべて外部キーで参照しますか。 または 2)主キーテーブルに新しいID列を作成し、これを新しいテーブルの外部キーとして使用しますか。 このデータベースは非常に大量のデータを保持することが期待されているため、各テーブルに保持されるデータ量を最小限に抑えることを目的として、これまで構築してきました。これを念頭に置いて、すべての行に2つのint列とdatetime列を保存するため、オプション2が最適なアプローチになりますが、不要な場合はルックアップ時間の増加を避けたいと思います。


1
CREATE TABLE…AS SELECTの主キーの自動インクリメント
を介して複雑な選択クエリを使用してテーブルを作成しましたCREATE TABLE ... AS SELECT...。このクエリに自動インクリメントの主キーを追加するにはどうすればよいですか? 例えば: create table `user_mv` select `user`.`firstname` as `firstname`, `user`.`lastname` as `lastname`, `user`.`lang` as `lang`, `user`.`name` as `user_name`, `group`.`name` as `group_name` from `user` inner join `user_groups` on (`user`.`user_id`=`user_groups`.`user_id`) left join `group` on (`group`.`group_id`=`user_groups`.`group_id`) where `user`.`lang`=`group`.`lang` このクエリは、含まれているテーブルを作成しfirstname、lastname、lang、username、group_nameコラム。id自動インクリメントの主キーである列も必要です。 このクエリを変更してこれを行う方法はありますか?このクエリを実行した後にテーブルを変更することでそれができることはわかっていますが、create tableステートメントで直接これを行う方法がある場合は、その方法を知りたいです。

2
SQLプロファイラートレース(.trc)ファイルを読み取りおよび/または分析できるサードパーティのツールはありますか[クローズ]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 DBAがデータベースの1つで行ったトレースからの.trcファイルがあります。PCにSQLプロファイラーツールがインストールされていないため、内容を表示したり、トレースログを分析したりすることはできません。SQLプロファイラーをPCにインストールせずにこのファイルを読み取るにはどうすればよいですか?
12 sql-server  trace 

2
MERGEはtempdbを使用しますか?
次のクエリを検討してください。 MERGE [Parameter] with (rowlock) AS target USING (SELECT @AreaId, @ParameterTypeId, @Value) AS source (AreaId, ParameterTypeId, Value) ON (target.AreaId = source.AreaId AND target.ParameterTypeId = source.ParameterTypeId) WHEN MATCHED THEN UPDATE SET target.Value = source.Value, @UpdatedId = target.Id WHEN NOT MATCHED THEN INSERT ([AreaId], [ParameterTypeId], [Value]) VALUES (source.AreaId, source.ParameterTypeId, source.Value); 統計I / …
12 sql-server  t-sql 

1
マージレプリケーションの誤った競合を適切にトラブルシューティングする方法
SQL Server 2008 R2マージレプリケーションのセットアップがあります。 最近、いくつかのテーブルで競合が発生し始めました。競合ビューアを確認すると、勝者と敗者の列の値が同じであることがわかります。 これらのデータは1人の加入者だけが入力していると確信しています。 使った sp_showrowreplicainfoは競合する行の詳細を取得していましたが、2つの行がありました。1つはパブリッシャー用、もう1つはサブスクライバー用で、両方の行の「バージョン」が1です。 また、ブランドンの方法を実装しました:Merge Replicationで変更を監査しますが、通常の挿入のみを示していました! この種の競合のトラブルシューティングを開始する方法を教えてください。


2
SSIS 2012環境変数の作成が失敗する
環境をあるサーバーから別のサーバーに移植するスクリプトを作成しています。私はcatalog.create_environment_variable「入力値のデータ型が「文字列」のデータ型と互換性がありません」というエラーを受け取る問題の呼び出しに直面しています。proc "check_data_type_value。"から出てきます。 奇妙なのは、GUIスクリプトに変数を渡せば、そのクエリが機能するということです。 DECLARE @var sql_variant = N'\\myserver\ssisdata' EXEC [catalog].[create_environment_variable] @variable_name = N'FolderBase' , @sensitive = False , @description = N'' , @environment_name = N'Development' , @folder_name = N'POC' , @value = @var , @data_type = N'String' GO ただし、このスクリプトアプローチを使用しても機能しません。私が行ったレッグワークでは、このエラーメッセージは通常、varcharではなくnvarcharデータ型を使用して解決されることを示しています。しかし、それは私のものには当てはまりません。 次のスクリプトの108行目。私の仮定は、それの何かとグラグラということですsql_variant型が、私は考えていない何その事があるの。 USE SSISDB; GO DECLARE @folder_id bigint , @folder_name nvarchar(128) = …

3
SQL Server 2008のメモリにキャッシュされているものを確認するにはどうすればよいですか?
SQL Server 2008 R2にキャッシュされているものを確認する方法はありますか?私は、次の素敵な記事を見つけました:http://blog.sqlauthority.com/2010/06/17/sql-server-data-pages-in-buffer-pool-data-stored-in-memory-cache。ただし、各テーブルとインデックスのデータ(パーセンテージやKBなど)がどれだけ保存されているかを知りたいと思います。そのようなデータを取得する簡単な方法はありますか?

6
MySQLの大きなテーブルに列を追加する方法
私はPHP開発者なので、厳しくしないでください。約5.5GBの大きなテーブルがあります。私たちのPMは、新しい機能を実行するために新しいコラムを作成することにしました。テーブルはInnoDBなので、私が試したのは: 画面ロックでテーブルを変更します。約30時間かかりました。だから止めました。最初にすべてのトランザクションを終了しなかったためにミスをしましたが、2回目はマルチロックではありませんでした。ステータスはでしたcopy to tmp table。 このテーブルにもパーティションを適用する必要があるため、ダンプを作成し、名前を変更して、同じ名前と新しい構造のテーブルを作成することにしました。しかし、ダンプは厳密なコピーを作成しています(少なくとも他の何かは見つかりませんでした)。そこで、新しい列をダンプしsedてクエリを追加しました。しかし、いくつかの奇妙なエラーが始まりました。文字セットが原因だと思います。utf-8およびfileのテーブルは、後にus-asciiになりましたsed。そのため、データの30%でエラー(不明なコマンド '\' ')が発生しました。したがって、これも悪い方法です。 これを達成し、パフォーマンスを高速化する他のオプションは何ですか(PHPスクリプトで実行できますが、時間がかかります)。INSERT SELECTこの場合のパフォーマンスはどうなりますか。 事前に感謝します。
12 mysql  innodb 

2
MPIOではどのようなスループットを期待できますか?
2つの1 Gbps NICを備えたDell PowerEdge 2950は、スイッチ上の2つの1 Gbpsポートに接続され、1つの仮想インターフェイスとして存在する4つの1 Gbps NICを備えたNetAppに接続されます。24ドライブ、7200k SATA、NetApp RAID-DP。Microsoft iSCSIイニシエーターのMPIOを使用して、各ホストNICをNetAppにマップしました。SQLIOを使用したテストでは、書き込みスループットは約200 MBで妥当と思われますが、読み取りは100 MBに近くなります。 私の読み取りは、私の書き込みのように200 MBに近いはずではありませんか?これは構成の問題ですか、それとも理解できない根本的なストレージの問題がありますか? 更新:ランダムワークロードのIOPSは次のとおりです。読み取りは意味がありますが、書き込み用に20000をどうするかはわかりません。SANキャッシュは3.2 GBです。SQLIOテストは25 GBファイルに対するものです。
12 sql-server 

3
数百万件のレコードでテーブルを更新して、4日間でした
現在、数百万件のレコードでテーブルを更新していますが、4日間で、クエリはまだ実行中です。 クエリが実行されていることを示すアクティビティモニターを確認しました。 イベントログにエラーはまったくありません。 賢明なパフォーマンス: ディスクAのTempdb(850 GBの空き領域) ディスクBのデータベースファイル(750 GBの空き領域) 16 GBラム どうすればいいですか? クエリ UPDATE dbo.table1 SET costPercentage = ISNULL(t2.PaymentIndex, 1.0), t2.TopUp_Amt = (ISNULL(t2.PaymentIndex, 1.0) - 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00), Total_Tariff_Inc_t2 = ISNULL(t2.PaymentIndex, 1.0) * ISNULL(dbo.table1.Initial_Tariff_Amt, 0.00) FROM dbo.table2 t2 WHERE LEFT(dbo.test1.procodet, 3) = LEFT(t2.ProviderCode, 3) COLLATE database_default

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