sql >> データベース >  >> RDS >> Sqlserver

クエリ結果をその場でファイルにエクスポートする

    質問に対する回答で SQL コードを待っていないように思えます。あなたの質問の主な側面は、セキュリティの側面です。 sysadmin なしで要件を実装するにはどうすればよいですか 特権と新しいセキュリティ ホールなしで?これがあなたの本当の質問だと思います。

    あなたの問題を解決する方法が少なくとも 3 つあります。ただし、最初に、拡張ストアド プロシージャに基づくすべてのソリューションに sysadmin 権限が存在する理由を簡単に説明します。 . xp_cmdshell のような拡張ストアド プロシージャ 非常に古いです。それらは少なくとも、最初の Windows NT (NT 3.1) で実行される最初の Microsoft SQL Server である SQL Server 4.2 より前に存在していました。古いバージョンの SQL Server では、このような手順を実行するためのセキュリティ制限はありませんでしたが、後でそのような制限を設けました。すべての汎用を理解することが重要です あらゆるプロセスを開始できる手順 xp_cmdshell のような SQL Server アカウントで および sp_OACreate 必須 システム管理者を持つ 権限制限。 タスク指向のみ 明確な使用領域と役割ベースのアクセス許可を持つ手順により、セキュリティ ホールなしで問題を解決できます。これが、以前約束した 3 つの解決方法です。

    • sysadmin を使用して、SQL サーバーに新しい SQL アカウントを作成します。 特権。次に、拡張ストアド プロシージャの一部を使用するストアド プロシージャを作成します。 xp_cmdshell のように または sp_OACreate 要件を技術的に実装します (一部の情報を CSV ファイルにエクスポートします)。 EXECUTE AS に関して 条項 (http://msdn.microsoft.com/en-us/ を参照)ライブラリ/ms188354.aspx ) 作成したストアド プロシージャを構成して、sysadmin のアカウントで実行されるようにします。 特権。このプロシージャの実行を何らかの SQL ロールを持つユーザーに委任して、権限の委任の面でより柔軟にします。
    • CLR ストアド プロシージャを使用できます xp_cmdshell の代わりに および sp_OACreate .また、作成したプロシージャに対して役割ベースの権限を使用する必要があります。
    • 作成した SQL ストアド プロシージャをエンドユーザーが直接呼び出すことはありません。 SQL ストアド プロシージャを呼び出すソフトウェア (WCF サービスや Web サイトなど) が存在します。 SQL ストアド プロシージャ内ではなく、このソフトウェア内で CSV ファイルへのエクスポートを実装できます。

    すべての実装方法において、パスワードを保持する場所を正確に定義する必要があります ファイル システムにアクセスするアカウントの。さまざまなオプションがあり、すべて対応する長所と短所があります。偽装を使用して、エンド ユーザーのアカウントでファイル システムへのアクセスを許可することができます。最適な方法は、環境の状況によって異なります。



    1. JPAで切り捨てられた日付でグループ化

    2. MySQLデータベースのフロントエンドとしてMicrosoftAccessを使用していますか?

    3. カスタムSessionState Oracle SessionStateStoreProviderBase

    4. XAMPPが機能していません! -OS XYosemite