呵呵,可能需要改成NVARCHAR

解决方案 »

  1.   

    to  Yang_(扬帆破浪)
        谢谢!
        忘了写上了,的确用nvarchar试过.
        可以,但是有big5码存储过程仍然不行:(
      

  2.   

    另外,还想请教有没有成批修改table的方法. 比如将所有table中的varchar字段改成nvarchar.   
       或者给点提示, 比如说可能需要参考到某个系统表之类?谢谢!
      

  3.   

    declare @table varchar(20)
    declare @field varchar(20)
    declare @sql nvarchar(200)declare cursor getvarchar forselect a.name,b.name from sysobjects a,syscolumns b,systypes c where a.xtype='U' and a.id=b.id and b.xtype=c.xtype and c.name='nvarchar'open getvarchar
    fetch next from getvarchar into @table,@fieldwhile @@fetch_status<>-1
    begin
    set @sql='alter table '+@table+' alter column '+@field+' nvarchar'
    exec(@sql) 
    fetch next from getvarchar into @table,@field,@type
    end
      

  4.   

    多謝 j9988(j9988)我用的是繁體的sql server 2000. 好像假如字段是Primary Key 就會執行失敗, 但是手工改的話能成功. 有辦法強制執行嗎?出錯信息附後:伺服器: 訊息 5074,層級 16,狀態 8,行 1
    物件 'PK_ContainerItem' 與 資料行 'VoucherNo' 具相依性。
    伺服器: 訊息 4922,層級 16,狀態 1,行 1
    ALTER TABLE ALTER COLUMN VoucherNo 已經失敗,因為有一個或多個物件存取這個資料行。
      

  5.   

    关于繁体存储过程在简体中文sqlserver上运行问题,好像以前竹之草做过这种事情,我忘了怎么解决的了,你可以查查以前的帖子,或是去问他(数据库基础版斑竹)。
    你改了繁体系统的sqlserver的charset后,使用sqlserver的工具是能正常,但是其他客户端程序还是插入的繁体字符,数据库看到的当然是乱码。
    改成nvarchar可能是最好的办法,本来这个字段就是为了解决国际化的软件的问题。
    不过用了nvarchar后,再繁体系统录入的数据,在简体系统看到的同样是繁体字符(简体系统要支持unicode字符)
      

  6.   

    To: j9988(j9988)    對不起,實在太菜,有沒有方法判斷某個字段是不是Primary Key.謝謝!
      

  7.   

    有没有键?
    select OBJECTPROPERTY(OBJECT_ID(tbName) , 'TableHasPrimaryKey')
    键是什么?
    select COLUMN_NAME from INFORMATION_SCHEMA.KEY_COLUMN_USAGE where TABLE_NAME = tbName