我可以在 SQL 服务器 2008 中使用 SQL 语法更改我的表属性吗?


Can I change my tables properties with SQL syntax in SQL server 2008?

>我的学生服务器上有一个数据库,如果我想使用 SQL 服务器 DBMS 访问数据库属性,我需要去我的大学,这很痛苦。我想知道是否可以通过对特定表使用 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';
        }
?>

谢谢。

IDENTITY_INSERT是正确的语法,尽管您在用法中似乎错过了SET关键字。请参阅此行:

$query = "IDENTITY_INSERT customers ON ";

更改为:

 $query = "SET IDENTITY_INSERT customers ON ";

我解决了这个问题,它当然没有设置为身份规范是的。首先,我删除了表列 customerID,并使用以下查询重新创建它:

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

这将再次创建列,但将其设置为标识 yes。

没有你的帮助,我不可能做到。

谢谢。