2012-04-29 8 views
0

学生用サーバーにデータベースがありますが、SQLサーバーDBMSを使用してデータベースプロパティにアクセスするには私の大学に行く必要がありますが、それは苦痛です。特定のテーブルでSQLを使用してIDの仕様を変更できるかどうかを知りたいですか?これは選択されていないのでテーブルに挿入できません。私はこれを行うことができますか、家からこれらの変更を加えることができますか?SQL Server 2008のSQL構文でテーブルのプロパティを変更できますか?

私はテーブルにアクセスし、いくつかのプロパティを変更する方法を研究しており、このような何かに出くわした:

Set IDENTITY_INSERT TableName ON 

私はこのように、PHPスクリプトといくつかのSQLを使用して、これを行うことができるようにしたい:

$query = "IDENTITY_INSERT customers ON "; 

     $result = sqlsrv_query($conn, $query, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET)); 

     if($result === false) 
     { 
      echo "Error in query preparation/execution.\n"; 
      die(print_r(sqlsrv_errors(), true)); 
     } 

     else 
     { 
      echo'worked'; 
     } 

これは機能しますか?ここで

は、これを行うに私のラフな試みです:

<?php 
$serverName = "servername"; 
    $connectionInfo = array("UID" => "username", "PWD" => "password",  "Database"=>"database"); 
    $conn = sqlsrv_connect($serverName, $connectionInfo); 

    if($conn === false) // note the format of ‘equals’ 
    { 
     echo "Could not connect.\n"; 
     die(print_r(sqlsrv_errors(), true)); 
    } 



     $query = "SET IDENTITY_INSERT customers ON "; 

     $result = sqlsrv_query($conn, $query, array(), array("Scrollable" => SQLSRV_CURSOR_KEYSET)); 

     if($result === false) 
     { 
      echo "Error in query preparation/execution.\n"; 
      die(print_r(sqlsrv_errors(), true)); 
     } 

     else 
     { 
      echo'worked'; 
     } 

?> 

ありがとうございました。

+1

'SET IDENTITY_INSERT'はテーブルプロパティを変更しません。あなたのセッションが明示的な値を 'identity'カラムに挿入できることを意味します。 'identity'を持たないカラムを' identity'を変更しようとしていますか?そうなら[データを失うことなくテーブルを作成した後に自動インクリメントを設定する方法は?](http://stackoverflow.com/q/6084572/73226) –

答えて

2

IDENTITY_INSERTは正しい構文ですが、あなたの使用方法ではSETキーワードが欠落しているようです。

$query = "IDENTITY_INSERT customers ON "; 

変更するには::この行を参照してください

$query = "SET IDENTITY_INSERT customers ON "; 
+0

あなたの答えをありがとう!私はあなたが今このエラーを受けていると言ったことを試しました クエリの準備/実行でエラーが発生しました。 42000 [1] => 8106 [code] => 8106 [2] => [Microsoft] [SQL Serverネイティブクライアント10.0] [SQL [メッセージ] => [Microsoft] [SQL Serverネイティブクライアント10.0] [SQL Server]テーブル 'customers'にはIDプロパティはありません。 SET操作)) IDをyesに変更するために設定する必要があるcustomerID列があります。 – deucalion0

+0

ああ、実際に列をID列にしたいと思っていますか?アイデンティティである列に挿入したかったと思いました。 – mattytommo

+0

私のマシンにローカルにデータベースを持っていて、得意先テーブルがIDに設定されているので、新しい顧客を挿入するときにcustomerID列が自動増分されます。私は大学のマシンでSQLサーバを使って生徒のWebサーバにテーブルをアップロードしたときに、customerIDカラムがID仕様プロパティを失う可能性がありますか?私は分かりませんが、新しい顧客をデータベースに挿入しようとすると、失敗しています。それは、customerID列が値を受け取っていないことと、nullにすることができないことだけです。 私はそれを説明することを望む! :) – deucalion0

1

私は問題を解決したが、それはアイデンティティの仕様yesに設定されていない、もちろんでした。まず、私はテーブルの列得意先を落とし、そしてそれは、このクエリを使用して再作成:

$query = "Alter table customers add customerID INT IDENTITY(1,1) not null"; 

これは再び列を作成したが、イエスのアイデンティティに設定します。

私はあなたの助けなしにはできなかった。

ありがとうございます。

+1

素敵な仕事、あなたは先に進み、あなたの答えの隣にあるダニをクリックしてそれを受け入れるかもしれません:) – mattytommo

+0

私はできると思います!あなたは私がそこに着くのを手伝った!考えておく! :) もう一度お世話になりました! – deucalion0

+0

Hehe問題なし:) – mattytommo

関連する問題