2012-04-29 43 views
0

我在學生服務器上有一個數據庫,如果我想使用SQL服務器DBMS訪問數據庫屬性,我需要去我的大學,這很痛苦。我想知道是否可以通過在特定表上使用SQL來更改身份規範?我不能插入到表中,因爲這沒有選擇是的,我希望能夠從家中進行這些更改,我可以這樣做嗎?我可以在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不改變任何表格屬性。這僅僅意味着你的會話可以在「身份」列中插入一個明確的值。你是否試圖改變一個沒有「身份」的專欄來擁有「身份」?如果是這樣,請參閱[在創建表後沒有任何數據丟失的情況下如何設置自動增量](http://stackoverflow.com/q/6084572/73226) – 2012-04-29 11:57:46

回答

2

IDENTITY_INSERT是正確的語法,雖然在您的使用中似乎錯過了關鍵字SET。看到這一行:

$query = "IDENTITY_INSERT customers ON "; 

更改爲:

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

感謝您的回答!我試着你說的現在我得到這個錯誤 查詢準備/執行錯誤。 Array([0] => Array([0] => 42000 [SQLSTATE] => 42000 [1] => 8106 [code] => 8106 [2] => [Microsoft] [SQL Server Native Client 10.0] Server]表'customers'沒有標識屬性,不能執行SET操作[message] => [Microsoft] [SQL Server Native Client 10.0] [SQL Server]表'customers'沒有標識屬性。 SET操作。)) 我有一個customerID列,我需要設置更改標識爲是 – deucalion0 2012-04-29 11:56:53

+0

啊好吧,所以你實際上想讓列成爲一個標識列?我以爲你只是想插入一個身份的列。讓我知道如果這就是你想要的,我會更新我的答案:) – mattytommo 2012-04-29 11:59:46

+0

我在我的機器上本地數據庫,customers表被設置爲標識是,所以當我插入一個新客戶時,customerID列自動遞增。我想當我使用大學機器上的SQL服務器將我的表上傳到我的學生Web服務器時,customerID列可能會丟失其身份規格屬性?我不知道,但是當我嘗試向數據庫中插入一個新客戶時,它失敗了,我唯一能想到的是customerID列沒有接收到值,也不能爲空。 我希望能夠解釋它! :) – deucalion0 2012-04-29 12:13:44

1

我解決了這個問題,它當然沒有設置身份是規範的。首先,我刪除的表列的customerID,並使用該查詢重建它:

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

這又創造了列,但它設置爲身份肯定。

沒有你的幫助,我無法做到。

謝謝。

+1

不錯的工作,你可以繼續,並點擊你的答案旁邊的打勾,並接受它:) – mattytommo 2012-04-30 11:56:26

+0

我想我可以!儘管你確實幫助我達到了目標!我會考慮一下! :) 再次感謝您的幫助! – deucalion0 2012-04-30 15:56:56

+0

呵呵沒問題:) – mattytommo 2012-04-30 16:07:15

相關問題