C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.38849 の関連記事表示

<< 0 >>
■38849  コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ sol -(2009/07/26(Sun) 14:05:06)

    分類:[データベース全般] 

    VISTA Ultimate SP2
    SQL Server 2005 Express Edition

    SQL Server 2005 Express Editionで、
    テーブルを作成しフィールドをf1,f2と2つ持つとします
    キーの設定をせずに、レコードを下記のように直入力でデータを作成すると警告「!」が出ます
    これは何故なんでしょう

    f1フィールド,f2フィールド

    1,Null
    1,Null <<--ここで「1」警告が出る

    警告の内容--------------------------------------------------
    この行は正常にコミットされました
    ただし、コミット後にデータを再取得中に問題が発生しました
    そのためこの行の表示されたデータは読み取り専用です
    この問題を解決するにはクエリーを再実行してください
    ------------------------------------------------------------

    キーの設定をしなければ、重複は許されるとおもうんですがダメですか?
親記事 /過去ログ68より / 関連記事表示
削除チェック/

■38850  Re[1]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ 魔界の仮面弁士 -(2009/07/26(Sun) 14:10:31)
    No38849 (sol さん) に返信
    > テーブルを作成しフィールドをf1,f2と2つ持つとします
    再現テストを行ってみたいので、そのテーブルを作成するための
    CREATE TABLE 文を提示できますか?

    > キーの設定をせずに、レコードを下記のように直入力でデータを作成すると警告「!」が出ます
    > これは何故なんでしょう
    これは SQL Server Management Studio Express でテーブルを開き、
    そこに直接入力した、という意味でしょうか?
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38851  Re[2]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ sol -(2009/07/26(Sun) 14:19:16)
    No38850 (魔界の仮面弁士 さん) に返信
    > ■No38849 (sol さん) に返信
    >>テーブルを作成しフィールドをf1,f2と2つ持つとします
    > 再現テストを行ってみたいので、そのテーブルを作成するための
    > CREATE TABLE 文を提示できますか?

    これでいいんでしょうか?

    USE [test]
    GO
    /****** オブジェクト: Table [dbo].[Table_1] スクリプト日付: 07/26/2009 14:12:31 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE TABLE [dbo].[Table_1](
    [f1] [nvarchar](50) NULL,
    [f2] [nvarchar](50) NULL
    ) ON [PRIMARY]

    >
    >>キーの設定をせずに、レコードを下記のように直入力でデータを作成すると警告「!」が出ます
    >>これは何故なんでしょう
    > これは SQL Server Management Studio Express でテーブルを開き、
    > そこに直接入力した、という意味でしょうか?

    はい!そうです
    SQL Server Management Studio Express で「新しいデータベース」を作成しtestを作成しました
    またVS 2008 C#でも同じように作成したのですが同じような現象が出ました

    なお、f2の部分にデータを入力すると警告は出なかったと記憶しています
    上のON [PRIMARY]て部分はもしかして・・・
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38864  Re[3]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ ベジータ -(2009/07/27(Mon) 00:54:35)
    テーブルにNULL許可になってないのでは?
    ちなみにPRIMARYキーはnullは許可できません
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38865  Re[4]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ sol -(2009/07/27(Mon) 06:31:13)
    No38864 (ベジータ さん) に返信
    > テーブルにNULL許可になってないのでは?
    > ちなみにPRIMARYキーはnullは許可できません

    キーの設定をせずに、レコードを下記のように直入力でデータを作成すると警告「!」が出ます
    ~~~~~~~~~~~
    ここがわからないところ両フィールドNullを許容チェックが入った状態になってます
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38867  Re[5]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ DDD -(2009/07/27(Mon) 09:13:18)
    よくありますが、おそらくバグです。
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38875  Re[6]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ Jitta on the way -(2009/07/27(Mon) 10:34:41)
    No38867 (DDD さん) に返信
    > よくありますが、おそらくバグです。

    “何が”よくあることなのでしょう?
    “何の”バグだとおっしゃるのでしょう?
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38877  Re[5]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ Jitta on the way -(2009/07/27(Mon) 10:39:36)
    No38865 (sol さん) に返信
    > ■No38864 (ベジータ さん) に返信
    >>テーブルにNULL許可になってないのでは?
    >>ちなみにPRIMARYキーはnullは許可できません
    >
    > キーの設定をせずに、レコードを下記のように直入力でデータを作成すると警告「!」が出ます
    > ~~~~~~~~~~~
    > ここがわからないところ両フィールドNullを許容チェックが入った状態になってます
    >


    キーの設定をせずに、レコードを下記のように直入力でデータを作成すると警告「!」が出ます
    これは何故なんでしょう
    f1フィールド,f2フィールド
    1,Null
    1,Null <<--ここで「1」警告が出る

    これは、行を二つ作った、ということ?
    だったら、おそらく みきぬさんの通り。
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38874  Re[1]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ みきぬ -(2009/07/27(Mon) 10:33:21)
    No38849 (sol さん) に返信
    > 警告の内容--------------------------------------------------
    > この行は正常にコミットされました
    > ただし、コミット後にデータを再取得中に問題が発生しました
    > そのためこの行の表示されたデータは読み取り専用です
    > この問題を解決するにはクエリーを再実行してください
    > ------------------------------------------------------------
    >
    > キーの設定をしなければ、重複は許されるとおもうんですがダメですか?

    ん、なんか勘違いしてますか?
    「正常にコミットされました」って書いてあるじゃないですか。重複レコードは登録されてますよ。

    ここからは予想ですが、レコードを登録した後に再取得をするところで、本来は1件取得するところを2件拾ってきてしまったので「ただし、コミット後にデータを再取得中に問題が発生しました」というメッセージが出たんだと思います。
    だって、レコードを一意に特定することができないんだもん。
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38892  Re[2]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ sol -(2009/07/27(Mon) 11:57:04)
    No38874 (みきぬ さん) に返信
    > ■No38849 (sol さん) に返信
    >>警告の内容--------------------------------------------------
    >>この行は正常にコミットされました
    >>ただし、コミット後にデータを再取得中に問題が発生しました
    >>そのためこの行の表示されたデータは読み取り専用です
    >>この問題を解決するにはクエリーを再実行してください
    >>------------------------------------------------------------
    >>
    >>キーの設定をしなければ、重複は許されるとおもうんですがダメですか?
    >
    > ん、なんか勘違いしてますか?
    > 「正常にコミットされました」って書いてあるじゃないですか。重複レコードは登録されてますよ。
    >
    > ここからは予想ですが、レコードを登録した後に再取得をするところで、本来は1件取得するところを2件拾ってきてしまったので「ただし、コミット後にデータを再取得中に問題が発生しました」というメッセージが出たんだと思います。
    > だって、レコードを一意に特定することができないんだもん。

    商品区分に対する商品など1:Nの関係にある時、同じデータ(レコード)が出来る可能性があると思いまして
    実際Accessでは普通(Errもでず)に登録できたので
    もしかしてSqlServerはAccessと違い、Key(一意名)項目が必須と言うことでしょうか
    読み取り専用は困りますー^^;
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38896  Re[3]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ みきぬ -(2009/07/27(Mon) 12:41:19)
    No38892 (sol さん) に返信
    > 商品区分に対する商品など1:Nの関係にある時、同じデータ(レコード)が出来る可能性があると思いまして
    > 実際Accessでは普通(Errもでず)に登録できたので
    >
    Access ではできますね。
    おそらく内部でレコードを一意に特定できるような情報(OracleでいうところのROW_IDみたいなの)を持っていて、それを使ってるんでしょうね。

    SQLServer にはそれがないか、あっても外からは扱えないんでしょうね。
    Visual Studio のクエリデザイナを使った経験からの推測ですが、主キーがついている場合には主キーを使い、そうでない場合は全カラムの変更前の値を使ってレコードを特定しようとするんじゃないかな。

    > もしかしてSqlServerはAccessと違い、Key(一意名)項目が必須と言うことでしょうか
    > 読み取り専用は困りますー^^;

    SQL Server Management Studio Express のテーブル表示を使った手入力ができないってだけで、UPDATEクエリを書けば更新はできますよ。だから必須とまでは思いません。
    もっとも、同一データの片方だけ更新するようなクエリをどう書くか悩む前に、自分ならさっさと人工キーを用意しちゃうと思いますが…。
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■38897  Re[4]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ sol -(2009/07/27(Mon) 13:07:13)
    2009/08/06(Thu) 00:13:32 編集(投稿者)
    2009/08/06(Thu) 00:07:47 編集(投稿者)
    2009/07/27(Mon) 21:14:22 編集(投稿者)

    No38896 (みきぬ さん) に返信
    > ■No38892 (sol さん) に返信
    >>商品区分に対する商品など1:Nの関係にある時、同じデータ(レコード)が出来る可能性があると思いまして
    >>実際Accessでは普通(Errもでず)に登録できたので
    >>
    > Access ではできますね。
    > おそらく内部でレコードを一意に特定できるような情報(OracleでいうところのROW_IDみたいなの)を持っていて、それを使ってるんでしょうね。
    >
    > SQLServer にはそれがないか、あっても外からは扱えないんでしょうね。
    > Visual Studio のクエリデザイナを使った経験からの推測ですが、主キーがついている場合には主キーを使い、そうでない場合は全カラムの変更前の値を使ってレコードを特定しようとするんじゃないかな。
    >
    >>もしかしてSqlServerはAccessと違い、Key(一意名)項目が必須と言うことでしょうか
    >>読み取り専用は困りますー^^;
    >
    > SQL Server Management Studio Express のテーブル表示を使った手入力ができないってだけで、UPDATEクエリを書けば更新はできますよ。だから必須とまでは思いません。
    > もっとも、同一データの片方だけ更新するようなクエリをどう書くか悩む前に、自分ならさっさと人工キーを用意しちゃうと思いますが…。

    なるほどテストなんで
    自動付番Noで対処しとこうかな!
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39343  Re[5]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ sol -(2009/08/06(Thu) 00:13:02)
    2009/08/06(Thu) 00:49:10 編集(投稿者)
    No38897 (sol さん) に返信
    > 2009/08/06(Thu) 00:07:47 編集(投稿者)
    > 2009/07/27(Mon) 21:14:22 編集(投稿者)
    >
    > ■No38896 (みきぬ さん) に返信
    >>■No38892 (sol さん) に返信
    > >>商品区分に対する商品など1:Nの関係にある時、同じデータ(レコード)が出来る可能性があると思いまして
    > >>実際Accessでは普通(Errもでず)に登録できたので
    > >>
    >>Access ではできますね。
    >>おそらく内部でレコードを一意に特定できるような情報(OracleでいうところのROW_IDみたいなの)を持っていて、それを使ってるんでしょうね。
    >>
    >>SQLServer にはそれがないか、あっても外からは扱えないんでしょうね。
    >>Visual Studio のクエリデザイナを使った経験からの推測ですが、主キーがついている場合には主キーを使い、そうでない場合は全カラムの変更前の値を使ってレコードを特定しようとするんじゃないかな。
    >>
    > >>もしかしてSqlServerはAccessと違い、Key(一意名)項目が必須と言うことでしょうか
    > >>読み取り専用は困りますー^^;
    >>
    >>SQL Server Management Studio Express のテーブル表示を使った手入力ができないってだけで、UPDATEクエリを書けば更新はできますよ。だから必須とまでは思いません。
    >>もっとも、同一データの片方だけ更新するようなクエリをどう書くか悩む前に、自分ならさっさと人工キーを用意しちゃうと思いますが…。
    >
    > なるほどテストなんで
    > 自動付番Noで対処しとこうかな!ということで一旦は閉じたのですが継続して質問です
    >
    >
    フィールド名 f1 f2 f3 と作成し颯爽とf3をint型IDENTITY(自動付番)1から1づつ加算で作成したのですが、
    f1 に「1」を入力 行移動(f3 に「1」が入る)
    f1 に「1」を入力 行移動で又同じように「この行は正常に・・・・」の警告がでるのですが、
    SQL Serverのデータは必ず(?)入れるデータをバラバラに入れないといけないのでしょうか?

    +自己レスです
    C#でデータグリッドを作りupdateすると問題無く登録できるようです(警告でなかった)
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39346  Re[6]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ みきぬ -(2009/08/06(Thu) 09:30:45)
    2009/08/06(Thu) 09:32:01 編集(投稿者)

    No39343 (sol さん) に返信
    > フィールド名 f1 f2 f3 と作成し颯爽とf3をint型IDENTITY(自動付番)1から1づつ加算で作成したのですが、
    > f1 に「1」を入力 行移動(f3 に「1」が入る)
    > f1 に「1」を入力 行移動で又同じように「この行は正常に・・・・」の警告がでるのですが、

    ちょっくら触ってみたけど、再取得のときには入力した値だけを使ってデータを取りに行くみたいね。
    上の例の場合、f1 と f2 に入力した値だけを使って(登録と)再取得を行うのでそうなるみたい。
    IDENTITY 列を主キーにしてもしなくても、この動きは変わらなかった。

    ※SQL Server 2005 Developer Edition 付属の Management Studio と SQL Server Profiler にて確認


    > SQL Serverのデータは必ず(?)入れるデータをバラバラに入れないといけないのでしょうか?

    警告の通り、再取得すれば?
記事No.38849 のレス /過去ログ68より / 関連記事表示
削除チェック/

■39968  Re[7]: コミット後にデータを再取得中に問題が発生SqlServer
□投稿者/ sol -(2009/08/18(Tue) 21:40:44)
    2009/08/18(Tue) 21:41:08 編集(投稿者)
    No39346 (みきぬ さん) に返信
    > 2009/08/06(Thu) 09:32:01 編集(投稿者)
    >
    > ■No39343 (sol さん) に返信
    >>フィールド名 f1 f2 f3 と作成し颯爽とf3をint型IDENTITY(自動付番)1から1づつ加算で作成したのですが、
    >>f1 に「1」を入力 行移動(f3 に「1」が入る)
    >>f1 に「1」を入力 行移動で又同じように「この行は正常に・・・・」の警告がでるのですが、
    >
    > ちょっくら触ってみたけど、再取得のときには入力した値だけを使ってデータを取りに行くみたいね。
    > 上の例の場合、f1 と f2 に入力した値だけを使って(登録と)再取得を行うのでそうなるみたい。
    > IDENTITY 列を主キーにしてもしなくても、この動きは変わらなかった。
    >
    > ※SQL Server 2005 Developer Edition 付属の Management Studio と SQL Server Profiler にて確認
    >
    >
    >>SQL Serverのデータは必ず(?)入れるデータをバラバラに入れないといけないのでしょうか?
    >
    > 警告の通り、再取得すれば?

    C#でデータグリッドを作りupdateすると問題無く登録できるようなのでこれで良しと、いたしとうございます
記事No.38849 のレス / END /過去ログ68より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -