データベース管理者

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

1
本番サーバーでsp_updatestatsを実行すると、どのような影響がありますか?
運用sp_updatestats環境のSQL Serverで実行しても安全ですか? または、SQLサーバーのすべての統計を更新すると、どのような影響がありますか?SQLサーバーを実行中に「チョーク」して、ユーザーにタイムアウトやその他の問題を引き起こすことはできますか?

2
SQL ServerエージェントでのPowershellスクリプトの実行エラー
SQL Serverエージェント(SQL Server 2012 Enterpriseの実行)を介して実行されるSQLジョブがあります。ジョブの最後のステップは、ネットワーク共有にあるアプリケーションを実行することです。残念ながら、アプリケーションが入っているフォルダーの名前(フォルダーはバージョン番号です)がわからないので、PowerShellを使用して検索します。 set-location "\\server\companydocuments\MyApp\Application Files\" $name = Get-ChildItem | sort name -desc | select -f 1 | select name cd $name.name & ".\Application.exe" SQL ServerでPowerShellウィンドウを開くと、正常に動作します。これをSQL Serverエージェントで実行すると、次のエラーが発生します。 A job step received an error at line 1 in a PowerShell script. The corresponding line is 'set-location "\\server\companydocuments\MyApp\Application Files\'" アクセス許可の問題かもしれないと思ったので、資格情報(運用サーバーではなくテストサーバー)でSQL …

1
SQLの最小限のロギング条件
このページhttp://technet.microsoft.com/en-us/library/dd425070(v=sql.100).aspxで行われた要求をテストするためのスクリプトを作成しました。最小限のロギングが行われるか、行われません。 このスクリプトを使用すると、さまざまな種類の挿入ごとのログレコード長の合計は次のようになります。 ヒープが空でタブロックなし60000 タブロック56000でヒープが空 ヒープは空ではなく、タブロックはありません60000 タブロック56000でヒープが空ではない ヒープとインデックスが空でタブロックがない126188 ヒープとタブロック114188で空のインデックス ヒープとインデックスが空ではないタブロックなし138696 タブロック112000でヒープとインデックスが空ではない 空のクラスターがタブロックなしで注文された64168 タブロック56168で空のクラスターを注文 クラスターが空で順序付けられていないタブロックなし73388 タブロック65388でクラスタが空の順序なし クラスターが空ではなくタブロックがない63912 タブロック55944で空でないクラスター クラスターとインデックスが空でタブロックがない124336 クラスターとタブロックで空のインデックス108336 クラスターとインデックスが空ではないタブロックなし123876 タブロック107924でクラスターとインデックスが空ではない これらの数値のいくつかは、technetページの表と一致していないようです。特に: 空のテーブルへの挿入と空でないテーブルへの挿入の間にロギングに違いはないようですが、タブロックなしで非空のクラスターに挿入すると完全なロギングがあるはずですとページは主張します tablockを使用して、indexを使用してヒープまたはクラスターに挿入すると、ロギングが削減されるように見えますが、ページでは完全なロギングが必要であると主張しています。 挿入のSELECT INTOメソッドを使用する場合、fn_dblogには操作が挿入である行はありませんが、ページにはこのメソッドが、表に記載されている動作を持つはずのバルクロード操作としてリストされています。 参考までに、これはSQL Expressデータベースで実行されました。DBCCTRACESTATUS(610)を実行すると、すべてが0です。 なぜ私がこれらの矛盾を目にする可能性があるのか​​を説明するのを手伝ってくれる人はいますか? 参考までに、コードを以下に示します。 SET NOCOUNT ON CREATE TABLE numbers (num INT) CREATE TABLE numbersUnordered (num INT) Declare @cnt int Select @cnt=0 while (@cnt<500) BEGIN …

1
STATISTICS_NORECOMPUTEの使用の妥当性
最近、いくつかの興味深いインデックスの問題がある一連のデータベースの保守に携わってきました。私を最も悪化させるものの1つは、開発、テスト、モデル、および生産マシン間のインデックスの違いです。違いによりクエリのチューニングが難しくなるため、クエリの同期は私の最初のプロジェクトの1つです。 テスト環境とモデル環境を比較したところ、モデル環境のほとんどのインデックスがSTATISTICS_NORECOMPUTE設定されているのONに対し、テスト環境のインデックスはそうではないことに気付きました。すべての環境で、すべてのデータベースの統計を更新する夜間ジョブがあります。 私はこれまでに対処したことがないSTATISTICS_NORECOMPUTEので、ここに私の質問があります。この設定を扱う際のベストプラクティスはありますか?1日の終わりに統計の更新を行っている場合STATISTICS_NORECOMPUTE、すべての環境ですべてのインデックスをオンにするのが最善ですか?それとも、正当な理由がないのですか? 編集:私はここでこの件に関するキンバリートリップのブログの1つを見つけましたが、それSTATISTICS_NORECOMPUTEはせいぜい控えめに使用する必要があることを示唆しているようです。しかし、私はまだそれをグローバルにオフにすることを心配しています。誰かがこれを試しましたか、そして彼らは何を経験しましたか?

1
拡張イベントセッションからのパラメーター値の収集
アプリケーションで使用されるステートメントをトレースするために、拡張イベントを使用しています。必要な情報を収集するセッションを作成しましたが、使用したパラメーターの実際の値も知りたいと思っています。 私はこのトレースを非実稼働環境で実行しており、トレースによるパフォーマンスへの影響は許容されます。 すべてのクエリはHibernateから発信され、次の形式でパラメーター化されています。 SELECT a, b, c From Customer where CustomerId = @P0 これは私のセッション設定です。 CREATE EVENT SESSION [TracingForStatements] ON SERVER ADD EVENT sqlserver.sp_statement_completed ( ACTION ( sqlserver.session_id, package0.collect_system_time, sqlserver.transaction_id, package0.event_sequence ) WHERE ( sqlserver.database_id=555 ) ) ADD TARGET package0.ring_buffer(SET max_memory= 128000) WITH (EVENT_RETENTION_MODE = NO_EVENT_LOSS, MAX_DISPATCH_LATENCY = 1 SECONDS) キャプチャされたステートメントで使用されたパラメーターの実際の値をキャプチャするにはどうすればよいですか?出来ますか? …

1
どうすれば匿名ログインを無効にできますか?
MySQLのドキュメントによれば、パスワードを追加するか、匿名アカウントを削除することで、MySQLサーバーを強化できます。 クライアントがパスワードなしで匿名ユーザーとして接続できないようにする場合は、各匿名アカウントにパスワードを割り当てるか、アカウントを削除する必要があります。 強化する前は、ユーザーテーブルは次のようになっています。 mysql> select user,host,password from mysql.user; +------------------+-----------+-------------------------------------------+ | user | host | password | +------------------+-----------+-------------------------------------------+ | root | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX | | root | gitlab | | | root | 127.0.0.1 | | | root | ::1 | | | | localhost | | | | gitlab …
9 mysql  security 

1
SELECTにユーザーを許可することと、ユーザーをdb_datareaderロールに追加することの間に違いはありますか?
私は許可するように頼まれたSELECT、INSERTおよびUPDATEデータベース内のすべてのテーブルに対して、特定のユーザーへ。私はにユーザーを追加することになったdb_datareaderし、それらを付与INSERTし、UPDATEデータベースレベルで。 しかし、それは私に考えさせSELECTました、データベースレベルでユーザー権限を付与することと、それらをdb_datareaderロールに追加することの違いは(もしあれば)何ですか?そして、何らかの方法でベストプラクティスはありますか?

1
変更の追跡の内部はSQL Server 2008から2012に変更されましたか?
切断されたデバイスと中央データベースサーバーの同期に関する問題のトラブルシューティングで、サーバーでSQL Server 2012にアップグレードした後に問題が発生しています。CHANGE_TRACKING_MIN_VALID_VERSIONは、本来よりも1大きい(または少なくともアップグレード前の値よりも)高い値を返しているようです。 簡単な例を設定する方法の例として、Arshad Aliのすばらしいウォークスルーの例を使用して作業してきました。 #1から#5までのスクリプトを実行して、SQL Server 2008環境と2012環境の両方で、Employeeテーブルの行を挿入、削除、および更新しました。 2008年、次のステートメントは0を返します。 SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID('Employee')) 2012年は1を返します。 テストでさらにいくつかのスクリプト(6〜8)を使用して作業する場合は、保持期間を1分に設定して、クリーンアップアクションを強制的に実行できるようにします。私はその日出発し、どうやらそれは一晩走ったようです。 2008年のインスタンスでは、CHANGE_TRACKING_CURRENT_VERSIONとCHANGE_TRACKING_MIN_VALID_VERSIONは等しくなります(11)。2012年のインスタンスでは、CHANGE_TRACKING_MIN_VALID_VERSIONはCHANGE_TRACKING_CURRENT_VERSION(11)よりも1つ高く(12)あります。これは、データベースが長時間アイドル状態のときに同期プロセスに影響を与える可能性があります。そして、特に次のテストを実行して、同期ではなく再初期化が必要かどうかを判断する場合に、プロセスがループに巻き込まれる可能性があることを発見しました。 IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Employee')) > @sync_last_received_anchor RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''... 他の誰かがこの行動の変化を経験しましたか?誰か説明がありますか?

1
Oracleのサービス名を変更できません
Windows 2003サーバー上のOracle 11.2.0.3インストールのサービス名を変更しようとしています。 インストール中に、サービス名はデフォルトドメインで定義されましたが、それを取り除きたいと思います。 サービス名mydb.foo.barを次のように変更するためにこれまでに行ったこと(および以前に機能したこと)mydb: alter system set service_names = 'mydb' scope = both; alter database rename global_name to mydb; うまくいったようです: SQL>パラメータ名を表示 名前タイプ値 ------------------------------------ ----------- --- --------------------------- db_name文字列mydb db_unique_name文字列mydb global_namesブールFALSE instance_name文字列mydb service_names文字列mydb SQL> (上記の出力から関連性のないいくつかのプロパティを削除しました) 次に、を使用alter system registerしてリスナーに再登録します。 これは効果がなかったので、データベースとリスナーを再起動しましたが、まだ運がありません。 現在の状況は次のとおりです。 select name from v$active_services 戻り値: SERVICE_ID | NAME | ネットワーク名 ----------- …

1
SQLサーバーでのインデックス再構築の速度を改善する
大量のデータを空のデータベースにインポートしています。開始する前に、一意でない非クラスター化インデックスをすべて無効にして、インポートのパフォーマンスを向上できるかどうかを確認しました。 ここで、インデックスを再度有効にしたいと思います。これを最適化するために何かできることがあるかどうか疑問に思っています。 再構築する必要がある100を超えるテーブルとほぼ2,000のインデックスがあります。データベースのサイズは200GBです。 私が実行しているスクリプトの重要なセクションは次のとおりです。 declare c_toggle_index cursor FORWARD_ONLY READ_ONLY for select 'alter index ' + QUOTENAME(i.name) + ' on ' + o.name + ' rebuild' from sys.indexes as i Inner Join sys.objects o On o.object_id = i.object_id Where o.is_ms_shipped = 0 And i.index_id >= 1 and i.type > 1 and …

1
mongodb設定サーバーが同期していない
2つのシャード、2つのレプリカサーバーと3つの構成サーバー、および2つのモンゴを使用してセットアップしました。次の問題があります。 1)mongo configサーバーが同期していません: Aug 14 09:46:48 server mongos.27017[10143]: Sun Aug 11 09:46:48.987 [CheckConfigServers] ERROR: config servers not in sync! config servers mongocfg1.testing.com:27000 and mongocfg3.testing.com:27000 differ#012chunks: "d2c08c5f1ee6048e5f6fab30e37a70f0"#011chunks: "7e643e9402ba90567ddc9388c2abdb8a"#012databases: "6f35ec52b536eee608d5bc706a72ec1e"#011databases: "6f35ec52b536eee608d5bc706a72ec1e" 2)このドキュメントを使用してサーバーを同期します:http : //docs.mongodb.org/manual/tutorial/replace-config-server/ 3)同期後、1つのmongosサーバーを再起動し、ログでこれを確認します。 Thu Aug 15 09:56:05.376 [mongosMain] MongoS version 2.4.4 starting: pid=1575 port=27111 64-bit host=web-inno.innologica.com (--help for usage) Thu …
9 mongodb 

2
列がカタログに基づく整数ではなくシリアルデータ型として定義されているかどうかを確認するにはどうすればよいですか?
したがって、私は現在、テーブル定義を構築するためにpostgres(9.1)カタログを読むためのSQLをいくつか作成しています。ただし、SERIAL / BIGSERIALデータ型で問題が発生しています。 例: CREATE TABLE cruft.temp ( id BIGSERIAL PRIMARY KEY ); SELECT * FROM information_schema.columns WHERE table_schema='cruft' AND table_name='temp'; "db","cruft","temp","id",1,"nextval('cruft.temp_id_seq'::regclass)","NO","bigint",,,64,2,0,,,,,,,,,,,,,"db","pg_catalog","int8",,,,,"1","NO","NO",,,,,,,"NEVER",,"YES" データベース名(db)、スキーマ名(cruft)、テーブル名(temp)、列名(id)、デフォルト値(nextval(...))、データ型(bigintおよびint8 .. NOT bigserial) ...デフォルト値がシーケンスであるかどうかを確認するだけでよいことはわかっていますが、手動でシーケンスを作成し、デフォルト値が存在する非シリアル列を作成できるため、100%正確であるとは思いません。そのシーケンス。 誰か私がこれを達成する方法についての提案はありますか?nextval(* _ seq)のデフォルト値をチェックする以外に何かありますか? TL; DRまたはpg_catalogに不慣れな新規ユーザーの場合にここに追加されたSQLソリューション用に編集: with sequences as ( select oid, relname as sequencename from pg_class where relkind = 'S' ) select sch.nspname …

4
MYSQLエラー2049(HY000):使用されている古い(4.1.1より前の)認証プロトコル参照を使用した接続(クライアントオプション 'secure_auth'が有効)
5.0バージョンにあるすべてのデータベースダンプを5.6バージョンに復元しようとすると、復元されました。その後、再接続しようとすると、次のエラーが発生します。 ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref used (client option 'secure_auth' enabled).. My.iniに次の行を追加してサービスを再起動しましたが、問題は解決しません。 skip-grant-tables次のリンクは、MYSQLのバグを示しています。 https://github.com/santisaez/powerstack/blob/master/packages/mysql/mysql-powerstack-secure_auth.patch 誰かがこのソリューションの修正を持っていますか?

2
SQL Serverバックアップを圧縮して保存する最も効果的な方法は何ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 6年前休業。 私はSQL Serverバックアップを圧縮および保存するためのさまざまな方法のテストをいくつか行っています(SQL Server 2008 R2 Enterpriseエディションを使用)。SQLの外部でこれらのバックアップを長期的に保存するための最も効果的な圧縮アルゴリズムは何かと思います。内部圧縮アルゴリズム。 私は、物理ストレージやテープドライブなどについて心配していません。3TBのデータファイルとログファイルを、可能な限り最小の単一ファイルに変換しようとしています。 たとえば、.zipまたは.7zでしょうか?または、データベース内の変数が多すぎて、何が最も効果的であるかを正確に推定できず、いくつかのテストを実行するだけで済みますか?または、SQL Serverの内部圧縮は私が得られる最高のものですか?

1
SqlPackageがプロファイルから変数を取得しない
.dacpacとsqlpackage.exeを使用してデータベースをアップグレードしたい ここに私がsqlpackageを実行する方法があります: SqlPackage.exe /Action:Publish /SourceFile:"my.dacpac" /Profile:"myprofile.publish.xml" 私が得るエラーは: *次のSqlCmd変数はターゲットスクリプトで定義されていません:foo。 myprofile.publish.xmlファイルにその変数が含まれていることを確認しました: <ItemGroup> <SqlCmdVariable Include="foo"> <Value>bc\local</Value> </SqlCmdVariable> また、dacpacを作成するプロジェクトがVisual Studio内から myprofile.publish.xml 他に何が欠けているのでしょうか? (私はSQL Server 2012を使用しています)

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