SQL文を使用してDBサーバのフォルダを取得する方法

このQ&Aのポイント
  • APサーバ上のプログラムからSQL文を発行し、DBサーバのフォルダを取得する方法を教えてください。
  • DBサーバのフォルダ構成は環境によって異なるため、SQLServerのシステムテーブルなどに格納されている可能性がありますか?
  • 表領域のフルパス名やSQLServerのインストールフォルダを取得する方法があれば、教えてください。
回答を見る
  • ベストアンサー

PATH を返してくれるような SQL 文の書き方について

DBサーバ+APサーバの構成です。 APサーバで動くプログラムより SQL 文を発行して、 SQLServer2005 のデータを取得できる環境にあります。 やりたいことは、BACKUP DATABASE 文を、APサーバのプログラム から発行し、DBサーバ上にバックアップデータを保存することです。 DBサーバのフォルダ構成が環境によってまちまちなので、 SQL文を投げて、DBサーバのフォルダを取得したいのですが、 SQLServer のシステムテーブルなどに格納されていたりは しないでしょうか。 表領域のフルパス名、SQLServer インストールフォルダなどを 取得できる方法があれば教えてください。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

sys.master_filesもしくは、各データベースのsys.database_filesでパスは取得できます。 インスタンスのルートパスは、レジストリからしか取れないようですね。 declare @Root nvarchar(512); exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\Setup', N'SQLPath', @Root OUTPUT; select @Root

yan629
質問者

お礼

早速ありがとうございます。 無事目的の動作が出来そうです。

関連するQ&A

  • SQL2008から2000へデータコピーしたい

    使用環境は DB SQL Server2008 Express 使用ツールは Microsoft SQL Server Management Studio です サーバーは 64bit です インストールファイルは SQLEXPRWT_x64_JPN.exe です 現在、同じネットワーク上には SQLServer 2000のDBを使ったサーバーはあるので すがSQLServer2008は1台だけです 今回 SQL2008のDBを 2000の方にバックアップ用としてコピーしたいと思います ファイルの保存だけであれば可能かと思いますが 万が一の時に 接続先を変更して使えるようにしたいと思います。 認識として、 ・データファイルやログファイルは上位DBから下位DBへアタッチ操作はで きない (上位DBのファイルを下位DBがアタッチ操作できない) ・データベースコピーはできない そこで データコピー をしたいと思っています。 下記 HPを参考にフリーソフト(DBCopyTool.exe)を使ってみたのですが http://www.atmarkit.co.jp/fdotnet/dotnettips/859dbcopytool/dbcopytool.html サーバーの登録はうまくいくのですが、対象DBの登録について SQLServer2008express や SQLServer2005express はうまくいくのですが SQL2000のサーバーでは、下記メッセージが出てきます Fehler:Error getting the database.オブジェクト名'sys.database'は無効です 確認したいのは 上記フリーソフトを使われたことがある方、同じような現象には ならないかどうか 何か設定、確認不足なのでしょうか? また当初の希望内容を実現するため、他の方法があれば ご教授願いたいと思いま す。 同HP内の文末に、SQLServer 2000とSQL Server 2008との間でコピーが正しく行え た とあり決して依存するわけではないのですが、もしやと思い試しているのですがうまくい きません。 仮に 2000のDBを2008にコピーできるとしても、該当DBの選択のところでエラーが 出てしまうのはクリアする必要があると思うのですが… 以上 宜しくお願い致します。

  • 実行中のSQL文を参照する方法

    SqlServer2008を使用しております。 .netのプログラムが実行中とします。 この.netプログラムが発行しているSQL文を見る 機能はないでしょうか? ご教授よろしくお願いいたします。

  • SQL文について

    こんにちは! 皆様に教えて欲しいことがあります。 DBの中のデータで、一番年齢が高い人の名前を取得してくるときってどんなSQL文を書けばいいんでしょうか? 一番高い年齢を取得、なら select Max(年齢) from DB でいいと思うんですけど、一番年齢の高い人の名前、となると、どうやってとってくるのかわかりません。 where文で「having max(年齢)」ってやったんですけど、エラーが出て実行できませんでした。 今作ってるSQL文は、DB二つから他の条件も含めてselectしているので、他の理由でエラーになってるのかもしれませんが・・・。 職場にSQLがわかる人がいないので、誰にも聞けません。 もしわかる方がいらっしゃいましたら、教えてください。 宜しくお願いします。

  • MS SQL2005 STD での リストア時のエラー

    WinXP、MS SQL 2005 Standard で、データベースをRestoreしようとしたら、次のようなエラーが出ました。 (サーバー名はxxxx、復元先のDB名はzzzz-zzzzとしています。) 対応方法、ご存知の方いらっしゃいましたら、ご教授願います。 TITLE: Microsoft SQL Server Management Studio ------------------------------ 復元 failed for Server 'xxxx'. (Microsoft.SqlServer.Smo) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=復元+Server&LinkId=20476 ------------------------------ ADDITIONAL INFORMATION: System.Data.SqlClient.SqlError: The backup set holds a backup of a database other than the existing 'zzzz-zzzz' database. (Microsoft.SqlServer.Smo) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&LinkId=20476

  • SQL文について

    開発言語:VB2010 DB:SqlServer2005 及び ACCESS2007 SQLサーバーのテーブルをAccessのテーブルへINSERTしたいのですが、 一文で行う事は可能でしょうか? (テーブルの構造は全く同じです) 同じDB内であれば、下記のような感じで出来ると思うんですが。 +----------------------------------+ INSERT into Atest_ACCESS SELECT * FROM Btest_SQL Where OperationDate => 2011/09/05 +----------------------------------+ 出来るのあればどのようにすれば良いのが教えて頂けると幸いです。 よろしくお願い致します。

  • C#での開発環境について教えてください。

    初めて質問します。 最近、まったくの未経験からプログラマとして働き始めました。 それにあたり、今回、開発に携わることになりましたが、 アプリケーションの環境?構成?が APサーバー、WEBサーバー、DB、クライアントというものを使用して 開発するということですが、まだ、よく意味が分かりません。 とりあえず、イメージとしては、 クライアントからWebサーバーを使用して、APサーバーを呼び出して、 APサーバーからSQL文(DBに登録されているSTPの実行命令みたいな)をDBに投げる。 DBからの結果を逆のルートでクライアントへ返す。 といった解釈です。 色々調べてみたのですが、WebサーバーとApサーバーを分けるメリットと、 違いがよく分かりません。 どなたか、初心者にもわかるように教えていただきたいと思っております。 ちなみに使用しているのは VisualStudio 2008とSQLServer2005です。 つたない説明ですが、よろしくお願いいたします。

  • SELECT文を発行して、ACCESSより取得する方法

    既存のプログラムを元に、 以下のようなソースを作成したのですが、 取得出来ませんでした。 参照設定やパスの設定、SQL文は正しいです。 どこがマズイのでしょうか? アドバイスをお願い致します。 Dim db  As DAO.Database Dim rs  As DAO.Recordset Dim SQL As String 'データベース接続 Set db = OpenDatabase("DBのパス") 'データ検索SQL SQL = "" SQL = " SELECT文 " 'ACCESSより取得 Set rs = db.OpenRecordset(SQL) db.Close rs.Close

  • WEBサーバに超長文SQL文を送信するには

    WEBサーバにクライアントマシンから1K以上の長文SQLを送信し、WEBサーバからデータベースサーバにアクセスしてSQLを実行しデータを取得したいと思います。 WEBサーバが1Kを超える長文SQLを受信することができません。 何が悪いのかわかりません。 WEBサーバがSQL文を受け、そこからDBサーバにアクセスする構造は変えたくありません。何かよい方法があれば教えてください。 お願い致します。

  • SQLServer の DB を、VB2005 で作成したアプリから作りたい

    こんにちは。 APサーバにVB2005 DBサーバに SQLServer 2005 という環境で動作する自作アプリケーションがあります。 このアプリを新規の環境にセットアップする際には、 1. DBサーバにSQLServer をインストール 2. SQLServer Management Studio で、データベース作成 3. 同じくテーブル作成。 4. APサーバにアプリケーションをインストール 5. 動作確認 という流れになりますが、セットアップの為に 技術者が必要になってしまいます。 そこでエンドユーザが簡単にセットアップできるように 2.と3. を、セットアップ用プログラムから 自動で走らせたく思っています。 APサーバ上で動くプログラムで、 DBサーバ上のSQLServer内に「hogehoge」というデータベースを 作成するにはどのように記述すれば良いのでしょうか。 宜しくお願い致します。

  • SQL文で

    SQL2000serverで 異なる2つのデーターベースの中にある 別のテーブルの情報を SQL文を使って、抽出する事は出来るのでしょうか? たとえば下記のように「DB-A」「DB-B」と言った 二つのDBの中のそれぞれのテーブルのIDフィールドで リレーションを取ってDB-AのTablA1のFldAの 値(AA)からDB-BのTablB1のFldBの値(あ)を 抽出することはSQL文で可能なのでしょうか? DB-A DB-B TablA1 TableB1 ID FldA ID FldB 1 AA 1 あ 2 BB       2 い 3 CC 3 う 4 DD 4 え