原沢 信道(@nharasawa) の回答履歴
- データベースのバックアップリストアの仕組みについて
【環境】 SQL Server 2008 R2 Express Edition (x64) データベースの勉強をしています。 データベースの場合、データベースを管理しているのはOSではなく、DBMSのため、ユーザーデータベースを戻しただけでは、戻らないとに認識しています。 EXCELのファイルのバックアップ/リストアは、単にEXCELファイルをバックアップしてリストアすればいいのは分かりますが、データベースの場合のバックアップ/リストアについての仕組みについてよく理解できていません。 理解する上で、いろんなパターンのバックアップ/リストアを試そうと思っており、以下の件につきましてご教示を頂けますようお願い致します。 (1) 障害が発生した場合を想定してのデータベースのバックアップですが、ユーザーデータベースだけではなく、masterデータベースのバックアップも必要という認識であっておりますでしょうか。 masterデータベースにはユーザーデータベースの場所、ユーザー情報、ユーザーのロール情報が含まれているため、バックアップしたユーザーデータベースだけリストアしても復旧できないということでよいでしょうか。 masterデータベースが損傷していなければ、バックアップしたユーザーデータベースだけリストアすれば、復旧できる。 (2) ユーザーデータベースが10個あり、そのうち特定なユーザーデータベース1個のバックアップおよびリストアテストをする手順については、下記でよろしいでしょうか。 テスト後は、次のテストパターンを学習するため、元の状態に戻したいと考えています。 <手順> 1.システムデータベース、必要なユーザーデータベース1個をのバックアップを行う。 2.ユーザーデータベース10個をデタッチする。 3.システムデータベースをデタッチする。 4.デタッチしたシステムおよびユーザーデータベースを別の場所に退避する。 5.システムデータベース、特定のユーザーデータベース1個をリストアする。 6.リストアしたユーザーデータベースが問題ないことを確認する。 7.リストアしたユーザーデータベース1個をデタッチする。 8.リストアしたシステムデータベースをデタッチする。 9.退避したシステムデータベース、ユーザーデータベースを元の場所に戻す。 10.システムデータベースをアタッチする。 11.ユーザーデータベース10個をアタッチする。
- ベストアンサー
- SQL Server
- noname#242248
- 回答数6
- 期間毎の年月を求めるSQL
3年毎の契約期間のデータがあり、 現在日と比較して、契約終了の1ヵ月前なら、 契約データを一覧表示したとして、警告を出そうかと思ってます。 契約日 2009年10月1日の場合は、 2012年9月(3年後の1ヵ月前 2015年9月(6年後の1ヵ月前 2018年9月(9年後の1ヵ月前 ・・・というような具合のタイミングで、 例えば現在日が2015年9月15日の場合は 上記に該当するので項目として、わかるように表示・抽出したいです。 select 契約番号 契約日 契約終了1ヵ月前の区分項目 from 契約データ 契約終了1ヵ月前の区分項目のSQLの書き方がわからず困っております。 どうかご教示お願い致します。
- ベストアンサー
- SQL Server
- boooone
- 回答数1
- マスタ化する際のテーブル設計について
訪問管理・問合せ履歴管理のシステムを作成しています。 システム設計段階ですが、 以下の様な分類を履歴データに組み込みたいと思ってます。 ユーザーに自由に追加させるようなマスタを作成する場合 どういった風に各マスタを作成すれば良いでしょうか? 作成したマスタを履歴データに項目追加する場合も含めて 教えていただけると助かります。 宜しくお願い致します。 ------------------------- 部門 営業・広報など 担当 電話・訪問 業務 業務1、業務2 内容 問合せ・トラブル・TODOなど ------------------------- データ 営業・電話・業務1・問合せ 営業・電話・業務2・問合せ 営業・訪問・業務1・問合せ 営業・訪問・業務1・トラブル 広報・訪問・業務1・トラブル 広報・電話・業務1・トラブル 広報・電話・業務1・問合せ 広報・電話・業務2・問合せ
- ベストアンサー
- SQL Server
- boooone
- 回答数2
- SQL Serverのレコードが削除できない
Management studioですでにレコードが存在している状態のテーブルに対して 属性を変更しました。 その後、Management studio上でレコードを削除しようとしてもエラーが出て削除できません。 どうすれば削除できるようになるのでしょうか?
- 締切済み
- SQL Server
- wcup2002
- 回答数1
- 複数テーブルへのデータ更新
sql server 2012環境です。 c sharpを利用してDB登録処理を書いています。 10万件のデータを3つのテーブルにそれぞれ入れたいのですが、一度に 10万件でなく、1万件ずつコミットさせたいと思っています。 データの元となるテーブルは1つで、それに10万件のデータが あるイメージです。 イメージとしては トランザクション開始 テーブル1へ1万件登録 テーブル2へ1万件登録 テーブル3へ1万件登録 コミット というようなことを10回ループしたいのですが、可能でしょうか。 1つのトランザクション内で3テーブルへ更新をかけるやり方がよくわかりません。 あとは大元のテーブルをrow_numberを使って1万件ずつselectすればどうだろうかと 思っています。
- 締切済み
- SQL Server
- ginfix
- 回答数1
- MySQLで他テーブルを使用した複数行同時変更
tanakaさん、matsudaさん、komatsuさんの3人が買い物に行きました。それぞれの所持金は50000円、購入した商品&価格は下記のとおりです。 【g】テーブルg 所持金 userId,g_money tanaka,50000 matsuda,50000 komatsu,50000 【ca】テーブルca 購入したもの userId,goods,price tanaka,watch.13000 matsuda,cardgame,1000 komatsu,bag,22000 matsuda,ballpen,500 tanaka,tablet.15000 tanaka,battery.1000 komatsu,chocolate,100 これをMySQLで、gの所持金から、caの購入リスト通りに引き算していくSQLを組みたいと思っています。 REPLACE INTO g(userId,g_money) SELECT (userId,VV) FROM (SELECT ca.userId,(SELECT g.g_money - ca.price) AS VV FROM ca, g WHERE ca.userId = g.userId) AS CG 下記のエラーが出てしまいます。 #1241 - Operand should contain 1 column(s) どのように修正すればいいかご教示いただけますでしょうか? よろしくお願いいたします。
- SQLのbetweenについて
現在SQLを勉強しています。 C♯とSQLServerを使用しているのですが betweenを使って困った点があります。 自分で入力するAとB(どちらも数字)をbetweenの条件にしていしているのですが 例) select フィールド名 from テーブル where フィールド名 between A and B; → テーブルのフィールド名 の中のAからBのデータを選択する は問題ありません。 ですがAとBが未入力だとエラーが当然でてしまいます。 そこで未入力だとフィールド名の中を全件selectするようにしたいのですが、これはbetween で出来るのでしょうか? おそらくは条件であれこれ指定するのだと思いますが… 回答お願いします
- ベストアンサー
- SQL Server
- namaikida
- 回答数3
- SQL文で作ったデータを使ったUPDATE
環境はMySQL5.6です。 下記のテーブルccがあります。 【cc】 shisan user 500 tanaka 1000 mikami 400 tanaka 1300 mikami SELECT Total, user FROM (SELECT SUM( cc.shisan ) AS Total, user FROM cc GROUP BY user) AS t1 とすることによりSQL上にt1テーブルを作ることが出来ます。 【t1】 Total user 900 tanaka 2300 mikami 次に、このt1テーブルのTotalの数値を下記のmoney_tableにあるcash欄に挿入(UPDATE)したいと考えています。 【money_table】 cash user 0 tanaka 0 mikami そこで下記のSQL文を作ったのですがエラーになります。 UPDATE money_table,cc SET money_table.cash=t1.Total FROM (SELECT Total, user FROM (SELECT SUM( cc.shisan ) AS Total, user FROM cc GROUP BY user) AS t1) WHERE money_table.user=t1.user どこがいけないのかご指導いただけませんでしょうか? よろしくお願いいたします。
- mysql where句複数テーブル複数条件摘出
こんにちわ。 mysqlを二日前から勉強し始めた超初心者者です。 まったくの初心者なので質問が的外れかもしれませんがよろしくお願い致します。 以下の三つのテーブルがあります。 t_seito ============================= id name comment created_at 11 赤井 あかい 0000-00-00 00:00:00 22 青葉 あおば 0000-00-00 00:00:00 33 白木 しらき 0000-00-00 00:00:00 ============================= m_kyouka ============== kyouka_id ky_name 1 国語 2 数学 3 理科 4 社会 5 英語 ============== t_score ===================== sc_id seito_id sckyouka_id score 1 11 1 50 2 22 1 80 3 33 1 23 4 11 2 94 5 22 2 43 6 33 2 67 7 11 3 13 8 22 3 76 9 33 3 59 10 11 4 78 11 22 4 40 12 33 4 35 13 11 5 64 14 22 5 87 15 33 5 30 ===================== この三つのテーブルをwhere句で結合させて 社会が50以上で英語が50点以下のデータを全て表示する。 という条件で摘出したいのですが・・・ select * from `m_kyouka`,`t_seito`,`t_score` where `kyouka_id`=`sckyouka_id` and `id`=`seito_id` and `kyouka_id`=4 and `score` >=50 and `kyouka_id`=5 and `score` <=50 と入力したところ ”返り値が空でした (行数 0)。 (Query took 0.0000 seconds.)” と表示されました。 いろいろとネットやら参考書などで調べてはいたのですが、 該当する条件がなかなか見つからず今回はじめて質問をさせていただきました。 何卒ご教授のほどよろしくお願い致します。
- ベストアンサー
- MySQL
- kuroniyusha
- 回答数3
- データベースについて
データベースについていくつか質問があります。 1.シングルクォートとタブルクォートの違い シングルクォートは、文字リテラルを使いたいときに使い ダブルクォートは、特殊文字や大文字小文字を区別したいときに使うと参考書に書いてあったのですが、ダブルクォートでも文字リテラルを使えたのですがなぜでしょうか!?特に、ダブルとシングルの使用に区別は要らないのでしょうか!? 2.SQLが操作できるフリーソフトでオススメを教えてください。用途は、SQL(オラクルのブロンズ)の勉強に使います。
- GROUP BYについて
お世話になっております。GROUP BY に関してつまずいています。 色々と調べているのですが、解決できないため質問させて下さい。 まず下記のような履歴テーブルがあります。 rireki_member_noとは投稿者のIDであり、title1、title2に登録された日付データ(date型)は その投稿者が投稿した日付が登録されています。(title1だけの場合もあればtitle2だけの場合もあり、両方の場合もあります) rirekiテーブル rireki_no rireki_member_no title1 title2 1 2 2014-09-12 2 1 2014-09-12 3 3 2014-09-14 2014-09-14 4 2 2014-09-18 5 1 2014-09-19 また、下記は投稿者のテーブルであり、rireki_member_noと、member_noは紐付いたものとなります。 memberテーブル memner_no member_name 1 佐藤 2 吉田 3 佐々木 そこで今回行いたいのは、タイトルを指定し、且つ日付を範囲指定した時、その会員の名前、そして投稿した日付を一覧で表示したいと考えていますが、その際のSQL文が分からず困っている状況です。 イメージ的には、 title2を指定し、2014-9-13から20149-19と範囲指定した場合 3 佐々木 2014-09-14 2 吉田 2014-09-19 といった結果を求めたいと考えています。 お恥ずかしいとは思いますが、実は昨夜からずっと悩んでいたりして・・・ rirekiテーブル単体であれば、 http://norm-nois.com/blog/archives/1293 で似たような内容で紹介されているのですが、今回のようにJOINが絡むと難易度が高くなっている状況です。 お忙しいなか恐縮ですが、お知恵を頂戴出来れば幸いです。 宜しくお願い致します。
- DBで大文字小文字を区別せずINSERTする方法
データベースに関する質問です。 現在、学校でデータベースを使用したシステムを開発しています。 データベースは主にPostgreSQLを使用しています。 データをINSERTする際に大文字小文字を区別せず、 同じ文字列であるかどうかチェックする方法はありますか? たとえば、「abc123」と「aBc123」を同一とみなし INSERTできないようにしたいです。(主キーのため) システム側ではなく、できればデータベース側で判定を行いたいです。 宜しくお願い致します。
- 締切済み
- PostgreSQL
- pop_pop7610
- 回答数3
- SQLServerにて複数のデータで条件指定したい
SQLServer 2008です。 Where 句をつかって Where str like 'A%' ということをしますよね 次に引数を使って WHERE str like @STR として @STR = 'A%' を 渡すことができるところまではわかりました。 では、 'A%','B%' や、 'A%', 'C%', 'D%'のように 複数を指定して処理結果を得るためにどうすればよいのでしょうか? 要するに WHERE str like @STR[] とかのように配列を指定するとか、もしくは別の方法があれば 教えてください。 WHERE str like @STR1 or str like @STR2 : or str like @STRn みたいにして n=100ぐらいにしておけばまず大丈夫だろう・・・ みたいなことするのでしょうか?
- 締切済み
- SQL Server
- MetalDragon
- 回答数1
- SQL Server 2008 R2 のメモリ
SQL Server 2008 R2 の使用環境は Xeon E5540 2.53GHz の内1コアを割り当てています。 メモリは4GB、Windows 2008 R2 Server 64bit です。 同時接続数は高々20に満たない程度なのですが、元々ここで質問させていただいた巨大なテーブル自体、サイズが4GBを超えていますので、メモリ不足は当初から懸念しておりました。 ここでご教授いただいたSQL Server 2008 R2 の推奨スペックから考える限り、メモリ不足は深刻かと思われるのですが、実際問題としてどの程度搭載してやれば快適とまでは行かないまでも、そこそこ不自由なく動作するものでしょうか? (多ければ多いほど良いというのは100も承知なのですが、諸般の事情であまり予算が裂けません)
- 締切済み
- SQL Server
- OhYeahZ
- 回答数2
- 末尾の全角スペースの削除
SQL Server 2008環境です。 文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。 UPDATE TEST_TABLE SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ') 全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に 半角スペースを全角に直すというものです。 しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに なってしまうため悩んでおります。 うまいやり方を教えていただけないでしょうか。 宜しくお願いします。
- 締切済み
- SQL Server
- ginfix
- 回答数4
- 末尾の全角スペースの削除
SQL Server 2008環境です。 文字列の末尾の空白を一括して削除したくて、以下のようなクエリを書きました。 UPDATE TEST_TABLE SET NAME = REPLACE(RTRIM(REPLACE(StoreBranchName, ' ', ' ')), ' ', ' ') 全角スペースを一度半角スペースにして、RTRIMをかけた後、最後に 半角スペースを全角に直すというものです。 しかし、これだと、元々半角スペースが入っていた場合、そっちまで全角スペースに なってしまうため悩んでおります。 うまいやり方を教えていただけないでしょうか。 宜しくお願いします。
- 締切済み
- SQL Server
- ginfix
- 回答数4
- 配列ようなデータ構造はSQLで作成できますか?
例えば、Twitterのようなシステムを作るとします。ユーザの情報に「名前」「ID」「フォロワー」があります(3つだけユーザー情報とします)。 id , name, follower_idsのようなフィールドが必要だと思います。ですが、この時follower_idsはいくらでも要素が増える可能性があります。このようなユーザー情報をSQL(特にMySQL)で管理することはできますか? 今回の例のような構造をデータベースに保管したいのですが、どんな形式をとったらいいか迷っているので、質問しました。ちなみにSQLはやったことがありません。おすすめの方法があったらお願いします。XMLやJSON形式というキーワードにもたどり着きましたが、なるべく早いデータ操作をしたいです。
- (SQLSERVER) 別サーバーへテーブルコピー
標題の別サーバーのDBへテーブルをコピー(更新)したいと考えておりますが、やり方が全く分かりませんのでお教えください。 【更新元】 販売管理サーバー OS:Windwos2008R2 SQL SERVER 2008R2 サーバー名:POS DB名:POSDATA テーブル名:POS売上伝票 【更新先】 社内開発用サーバー OS:Windwos2008R2 SQL SERVER 2012Express サーバー名:AD DB名:POS テーブル名:POS売上伝票 POS上のSQL ManagementStudeoから、AD上のSQLSERVERへのアクセスは可能な状態にしております。 ◎実装したい要件 POSサーバー上のデータを、毎日定時にADサーバー上のDBに追加更新 ※理想としては、バッチ等のスクリプトをタスクに登録し定時に実行 自分なりに調べてみたのですが、データを丸ごとコピーする場合は、"bcp"コマンドを実行すれば可能なようですが、bcpコマンドで、サーバー間のコピーの方法が良くわかりませんでした。 また、出来れば日々更新する為、データが変更されたレコードはUPDATE追加されたデータは、INSERTする事が理想です。 ※夜間のバッチ処理ですので、上記の方法が私の知識的に難しようであれば、テーブルを作り直ししてもよいと考えております。 効率的な方法をご存じの方がいらっしゃいましたらアドバイスをお願いいたします。
- 締切済み
- SQL Server
- sujinosuke00
- 回答数5