データベース管理者

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

2
ビューに権限を付与し、テーブルの選択を拒否する
MySQLユーザーがいて、データベース内の他のテーブルではなく、必要なビューのみを表示したい。次のように、特定のビューでのみこのユーザー権限を付与しました。 GRANT SHOW VIEW ON `myDatabase`.`awesome_view` TO 'thisUser'@'%' show grants;ステートメントを実行すると、期待どおりにこの権限しか表示されません。ただし、このユーザーに、これらのビューに関連するテーブルではなく、ビューだけをクエリしてもらいたいのですが、これを行う方法が見つかりません。ユーザーがビューで選択を行うようにしたい場合、テーブルに対しても選択を許可する必要がありますか、それとも間違っていますか? select残りのテーブルのステートメントを拒否し、コマンドラインで選択を実行しようとすると、次のようになります。 SELECT * FROM myDatabase.fordibenForYouTable; ERROR 1142 (42000): SELECT command denied to user 'thisUser'@'localhost' for table 'fordibenForYouTable' それが本当に欲しいことですが、ビューデータを選択した場合も拒否されました。 テーブルではなくビューのみをユーザーが利用できるようにする方法はありますか?

2
ドメイン管理者がSQL Serverに接続できない
Windows Server 2012 R2ドメインコントローラーとデータベースサーバー(W2K12R2 / SQL Server 2012)があります。 許可されたユーザーグループとして、「ドメイン管理者」グループにsysadmin権限を付与しました。 しかし、どういうわけか、ドメイン管理者はそのSQL Serverに接続できませんが、許可されたユーザーとしてドメイン管理者ユーザーを直接追加すると、機能します。Active Directoryは機能します。RDPログインが機能します。何か不足していますか? グループ「domain-admins」全体へのアクセスを許可する方法を誰かが知っていますか? エラーメッセージは次のとおりです。 サーバー名:SRV-DB エラー番号:18456 シュヴェレグラード:14 ステータス:1 コードの行:65536 イベントログには次のように書かれています(翻訳済み): インフラストラクチャ障害のあるトークンベースのサーバーアクセスのチェック中にエラーが発生しました。 状態は "1"です。domain-adminとしてRDPでそのdb-serverにログオンします。「管理者として実行」でSSMSを明示的に起動する必要があります。その後、「localhost」にアクセスできます。SSMSを管理者として開始しない場合、それはできません。「domain-admins」グループに参加するだけで十分だと思いました。

3
MySQLの大きなテーブルの一括削除
通知テーブルには、Amazon IODSに1000 IOPSのホストである約1億行が含まれており、1か月より古い行を削除したいと思います。 実行するとDELETE FROM NOTIFICATION WHERE CreatedAt < DATE_SUB(CURDATE(), INTERVAL 30 day);、すべてのIOPSが取得され、プロセスに数時間かかり、「ロック待機タイムアウトが超過しました。トランザクションを再起動してください」という理由で、多くの新しいエントリを挿入できません。 ここで説明する方法を実行しようとしました:http : //mysql.rjweb.org/doc.php/deletebig ただし、増分IDの代わりにUUIDを使用しています。 挿入/更新される新しいデータに影響を与えずにそれらの行を削除するための正しい効率的な方法は何ですか?

6
同じIDであるがnullの行を選択し、そのIDの別の列で他の値を選択する
特定のユーザー名列NULL以外の値とその他の値を持つ行のみを取得したいNULL。 その特定のユーザー名に対して両方の行にnullがあるか、両方にnull以外の値がある場合、出力に表示されません。nullと他の値を持つ同じユーザー名の行が3つ以上ある場合は、それらが表示されます。 以下はサンプルのサンプルと出力です。SQLクエリを使用してどのように実行できますか? +----------+-------+ | username | col2 | +----------+-------+ | a | abc | | a | ef | | b | null | | b | null | | c | der | | c | null | +----------+-------+ 出力 +----------+------+ | username | col2 | +----------+------+ | …

5
Postgresは分割テーブルのインデックスを継承します
状態ごとに53のサブテーブルに分割した約6000万行のテーブルがあります。これらのテーブルは、次のように大きなテーブルを「継承」します。 CREATE TABLE b2b_ak (LIKE b2b including indexes, CHECK ( state = 'AK') ) INHERITS (b2b8) TABLESPACE B2B; 私の質問はこれです:copyステートメントが完了するまでb2b8でインデックスを作成しない場合、サブテーブルはインデックスを継承しますか?言い換えれば、私はこれをやりたいです: Create b2b8 Create b2b8_ak inherits b2b8 COPY b2b8 FROM bigcsvfile.csv CREATE INDEX CONCURRENTLY そして、すべてがサブテーブルにすべてのインデックスを作成したことがわかります。

5
MySQLクエリ変数に相当するPostgreSQLですか?
これらのタイプのMySQLクエリをPostgreSQLに適応させる簡単な方法はありますか? MySQLのように変数を設定する set @aintconst = -333 set @arealconst = -9.999 ないようです。 SELECTクエリから変数を割り当て、それらの変数を後で私のSQLで使用する: select @pfID := id from platform where bios like '%INTEL%' select @clientID := id from client where platformID = @pfID 特に(2)については、ポインタに非常に感謝します。

2
TempDBは縮小しません。未処理のトランザクションはありません
SQL 2008でTempDBが非常に大きくなり(> 40GB)、それを縮小したいのですが。私は、Management Studioを介してdbccの縮小データベース、dbccの縮小ファイル、および縮小コマンドを使用しました。 次のエラーが発生します。 ページ1:4573184は作業テーブルページであるため移動できませんでした。 DBCC FREEPROCCACHEを実行し、縮小ルーチンの1つを再実行することで、危険を回避するためにいくつかの領域を再利用できましたが、明らかにこれは理想的ではなく、たぶん少し時間を費やすだけです。 私はDBCC OpenTranを実行しましたが、そこには何もぶらさがっていません。 私がインターネット上で読んだところはどこでもSQL Serverのリサイクルに行き着きます...確かにより良い方法が必要です...誰か? おかげで、 トム

1
シリアル列のシーケンスを更新する権限を明示的に付与する必要がありますか?
最近、シリアルID列を含むテーブルをスーパーユーザーとして作成しました。 create table my_table ( id serial primary key, data integer ); スーパーユーザー以外のユーザーにそのテーブルへの書き込みアクセスを許可したいので、アクセス許可を付与しました。 grant select, update, insert, delete on table my_table to writer; ユーザーがmy_table_id_seqシリアル列に関連付けられたシーケンスを変更する権限を持っていなかったため、そうした後のランダムな時点で、そのユーザーによる挿入は失敗し始めました。残念ながら、現在のデータベースではそれを再現できません。 私はこのようにユーザーに必要な許可を与えることでこれを回避しました: grant all on table my_table_id_seq to writer; 誰かが私を理解するのに役立ちますか なぜ、ある時点で、以前は十分であった権限が失敗し始めるのでしょうか? シリアル列を持つテーブルに書き込み権限を付与する適切な方法は何ですか?

1
sysadmin以外、SQL Serverエージェントジョブの非所有者に実行を許可する
SSISパッケージを実行するジョブがあります。 現在、所有者はプロキシアカウントです。sys-adminアカウントからジョブを手動で実行できます。 当社のWebサービスは、制限付きアカウントを使用してログインします。ジョブを実行する必要があります。現在、ジョブをまったく表示できません(名前で実行しようとすると、存在しないと表示されます)。 オーナー限定のアカウントに変更してみました。これでジョブを表示できましたが、SSISパッケージを実行できなくなったため、ジョブは実行に失敗しました。 制限付きアカウントが別のアカウントが所有するジョブを実行できるようにする方法が必要ですか?

1
postgresqlでのSQL時間ごとのデータ集約
私はデータベースの初心者なので、このデータベースについてあなたの助けを求めています。 時系列データを含むテーブルがあります。 2012/01/01 00:10, 10 2012/01/01 00:30, 5 2012/01/01 01:00, 10 2012/01/01 01:40, 10 2012/01/01 02:00, 20 テーブルは、間隔の上限のみを維持することにより、間隔ベースのデータを格納しています。たとえば、最初の行は[00:00-00:10]からの間隔を10の値で表し、2番目の行は(00:10-00:30]からの間隔を5の値で表し、3番目の行は間隔は(00:30-01:00)で、値は10です。 上記のような構造の時間別データを集約するために、Postgresで効率的なクエリが必要です。したがって、結果は次のようになります。 2012/01/01 00:00, 2012/01/01 01:00, 25 2012/01/01 01:00, 2012/01/01 02:00, 30 時系列データは大きいので、これをインデックス付けする際の助けがあれば非常にありがたいです。 ありがとう、ダン

2
プランガイドが使用されないのはなぜですか?
転換点の問題に最近遭遇し、クエリオプティマイザが検索列の非クラスタ化インデックスを単に無視するため、数秒以内に実行を完了するために使用されていた一部のレポートクエリが2分以上かかっています。以下のクエリの例: select top 100 * from [dbo].[t_Call] where ID > 0 and throwtime between '3/20/2014 7:00:00 AM' and '3/24/2014 6:59:59 AM' order by id ID列は、インデックスクラスタ化されたThrowtime非クラスタ化インデックスを持っています。この場合、クエリプランと非クラスター化インデックスthrowtimeをID変更するのではなく、順序付けを使用していることに気付きました。また、古いデータの一部をアーカイブすることも計画しています(現在、20 mln行あります!!)。しかし、アプリケーションでこれらの変更を行うにはしばらく時間がかかります。アプリケーションレベルで変更を加えずに、レポートを適度に高速に実行する方法を見つける必要があります(まあ、それは人生です)。 プランガイドを入力してください。非クラスター化インデックスのクエリヒントを使用して以下のプランガイドを作成しましたが、何らかの理由で、非クラスター化インデックスがまだ使用されていません。何か不足していますか? EXEC sp_create_plan_guide @name = N'[prod2reports_callthrowtime]', @stmt = N'select top 100 * from [dbo] . [t_Call] where ID > @0 and @1 < = …

2
選択クエリは必要以上に時間がかかります
私は、MySQLデータベーステーブルに約2300万件のレコードがあります。一意のものがないため、このテーブルには主キーがありません。2つの列があり、両方にインデックスが付けられています。以下はその構造です。 以下はそのデータの一部です。 今、私は簡単なクエリを実行しました: SELECT `indexVal` FROM `key_word` WHERE `hashed_word`='001' 残念ながら、これはデータを取得して表示するのに5秒以上かかりました。私の将来のテーブルには1500億のレコードがあるため、今回は非常に高いです。 私はExplainコマンドを実行して何が起こっているのかを確認しました。結果は以下のとおりです。 次に、以下のコマンドを使用してプロファイルを実行しました。 SET profiling=1; SELECT `indexVal` FROM `key_word` WHERE `hashed_word` = '001'; SHOW profile; 以下はプロファイリングの結果です。 以下は私のテーブルに関するいくつかの詳細です: では、なぜこれほど時間がかかるのでしょうか。それらもインデックス化されています!将来はたくさんのLIKEコマンドを実行する必要があるので、時間がかかりすぎています。何が悪いのでしょうか?


2
WHERE句が異なる2つのSELECTクエリをマージする
サービステーブルが1つあります。2つのSELECTクエリをマージする必要があります。どちらにも異なるwhere句があります。例えば SELECT U_REGN as 'Region', COUNT(callID) as 'OpenServices', SUM(CASE WHEN descrption LIKE '%DFC%' THEN 1 ELSE 0 END) 'DFC' FROM OSCL WHERE ([status] = - 3) GROUP BY U_REGN ORDER BY 'OpenServices' desc これは私に結果を与えます Region | OpenServices | DFC Karaci | 14 | 4 Lahore | 13 | 3 Islamabad …

1
sqlprojの参照アセンブリがサーバーにデプロイされていません
fastJSONの変更バージョンを参照として使用するVisual Studio 2013データベースプロジェクトがあります。次のスクリーンショットに示すように、参照プロパティで[DDLの生成]を選択しました。 そして.sqlproj msbuildファイルで: <Reference Include="fastJSON"> <HintPath>..\..\fastjson\output\net40\fastJSON.dll</HintPath> <GenerateSqlClrDdl>True</GenerateSqlClrDdl> </Reference> ただし、bin / debug / Project.sqlにはの行が含まれていませんCREATE ASSEMBLY fastJSON . . .。アセンブリを手動で追加すると、プロジェクトがデプロイされて実行されます。Visual Studioでアセンブリを展開するにはどうすればよいですか?

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