- PR -

SQLでサーバーPCにデータを保持したまま列を追加したい。

1
投稿者投稿内容
mu-ta
会議室デビュー日: 2004/07/10
投稿数: 1
投稿日時: 2004-07-10 14:40
はじめまして。最近SQLをはじめた。
SQL Server 2000はまったく初めてなのですが、質問があります。
自宅のPCでSQLを使ったWebアプリケーションを作成して、サーバー側PCで公開するということをしています。

常に自宅で開発を行っているのですが、たとえばすでにSQLを使ったWebアプリケーションを作成し終え、サーバー側PCで公開しているとします。

数週間公開していると色々アクセスログやユーザー情報などのデータがデータベースに情報がたまってきました。今度は新しい機能を追加しようと、自宅の開発用PC側のSQLデータベースのテーブルの列を1つ増やしたとします。開発環境側でのテストも終わり、いざサーバーにそのテーブル構造のみを適用させようとSQLのEnterprise Managerでデータのエクスポートをしたのですがうまくいきません。適当にやってたら、サーバー側のそのテーブルの列は1つ正常に増えたのですが、そのテーブルのデータがすべて消失してしまいました。

質問は、開発用PCのSQLデータベースのテーブルに新しくいつくか列を追加したときに、サーバー側PCのSQLデータベースのデータ(行データというのかな?)を保持したまま、新しい列を追加することはできないかということです。

何度かデータのエクスポートでいろいろ試したのですが列だけを追加することがうまくいきませんでした。どうしてもサーバー側にある行データが削除されないと列が追加されません。また追加する列はbit型でNullは許可しておりません。しかし初期値は1と設定しております。試した一例は次のとおり。

コピー元のテーブルの右クリックからデータのエクスポートでコピー元を開発PCとし、コピー先をサーバーとしました。「SQL Server データベース間のオブジェクトとデータのコピー」データのコピー」のチェックをはずしたら開発側のデータが転送されずに、テーブルの構造(列など)のみが転送されるのではないかと試みたのですが、サーバー側の行データがすべて消去されました。次にさきほどと同様に「データのコピー」のチェックをはずし、さらに「転送先

オブジェクトの削除」のチェックもはずしました。するとこれでは「Microsoft SQL Server から Microsoft SQL Server へのオブジェクトのコピーに失敗しました。」となります。

どのようにしたら開発側のSQLデータベースのテーブルに追加した列をサーバー側のSQLに行データを保ったまま適用することができるでしょうか?

手動でやればすむことかもしれませんが、追加する列が複数あった場合、バグの原因となるのでできれば開発側PCのテーブルの構造のみ(行データは含まない)をコピーしたいのですが、よろしくお願いいたします。
アティ
ベテラン
会議室デビュー日: 2003/08/14
投稿数: 91
お住まい・勤務地: KANAGAWA
投稿日時: 2004-07-11 17:25
アティ@休日でのほほ〜んです。(笑
SQL ServerのBooksOnlineで「Alter Table」を検索してください。
そこに、Add Columnの構文を見ればできると思います。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-07-12 09:33
mu-taさん、お早うございます。

引用:

れません。また追加する列はbit型でNullは許可しておりません。しかし初期値は1と設


一旦、null可で列を追加してから値を登録し、それからnull不可に変更すれば良いと思います。
アティ
ベテラン
会議室デビュー日: 2003/08/14
投稿数: 91
お住まい・勤務地: KANAGAWA
投稿日時: 2004-07-12 10:13
うん?DEFAULTを設定してあげればいいだけだと思いますよ?
引用:

きくちゃんさんの書き込み (2004-07-12 09:33) より:
mu-taさん、お早うございます。
(省略)
一旦、null可で列を追加してから値を登録し、それからnull不可に変更すれば良いと思います。


きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-07-12 11:08
アティさん、こんにちは。

引用:

うん?DEFAULTを設定してあげればいいだけだと思いますよ?


ありゃ、ホントだ。
なんて柔軟なんだ! SQL Server !
今までずっと遠回りしてました...。
1

スキルアップ/キャリアアップ(JOB@IT)