1)在SqlServer2000(SP4)上创建了一个视图:
CREATE VIEW vw_TZ_ForTest
AS
SELECT  A.ulReserved      AS 'TimeZone', B.UseXXX      AS 'DaylightSave', B.StartDateType      AS 'StartType', 
B.StartMonth      AS 'Start month', B.StartDay      AS 'Start date', B.StartWeekSEQ      AS 'Start week sequence', 
B.StartWeek      AS 'Start week', CAST(replace(B.StartTime,':','&') AS CHAR(8))  AS 'StartTime'
B.EndDateType      AS 'EndType', B.EndMonth      AS 'End month', B.EndDay      AS 'End date', B.EndWeekSEQ      AS 'End week sequence', 
B.EndWeek      AS 'End week', CAST(replace(B.EndTime,':','&') AS CHAR(8))      AS 'EndTime'
B.DaylightBias      AS 'AdjustMethod' 
FROM GLOBELRESERVEDSTABLE A ,T_DaylightSavingTime B    
WHERE A.ulClassIndex = 1000 AND  A.ulObjectIndex =1000 AND A.ulFieldName = 1000 AND A.ulFieldValue = 1000 AND 1=1

解决方案 »

  1.   

    2)视图对应的表T_DaylightSavingTime中含有varchar字段(但未指定显示排序规则),定义如下:
    CREATE TABLE [T_DaylightSavingTime] (
                                     [UseXXX]xxx             [INT]      NOT NULL,
                                     [StartDateType]         [INT]      NOT NULL,
                                     [StartMonth]            [INT]      NOT NULL,
                                     [StartDay]              [INT]      NOT NULL,
                                     [StartWeekSEQ]          [INT]      NOT NULL,
                                     [StartWeek]             [INT]      NOT NULL,
                                     [EndDateType]           [INT]      NOT NULL,
                                     [EndMonth]              [INT]      NOT NULL,
                                     [EndDay]                [INT]      NOT NULL,
                                     [EndWeekSEQ]            [INT]      NOT NULL,
                                     [EndWeek]               [INT]      NOT NULL,
                                     [StartTime]             [VARCHAR](100) NOT NULL,
                                     [EndTime]               [VARCHAR](100) NOT NULL,
                                     [DaylightBias]          [INT]      NOT NULL ) ON [PRIMARY]
    GO 
    3)在程序中运行bcp.exe导出数据:
    C:\Program Files\Microsoft SQL Server\80\Tools\Binn\bcp.exe "SELECT * FROM vw_TZ_forTEST" queryout "D:\TZ.txt" -c -U  sa -P -T -q -e "D:\vw_TZ_forTEST.log"
    4)该表所在的库创建时也未指定显示排序规则
      

  2.   

    问题:
    1)在实例安装时选择了Chinese_PRC_BIN的服务器上运行正常(在中文系统上选择此排序规则)。
    2)在实例安装时选择了Latin1_General_BIN的服务器上运行失败,报排序规则问题:
    SQLState = 37000, NativeError = 446
    Error = [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot resolve collation conflict for replace operation.
    SQLState = 37000, NativeError = 8180
    Error = [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could not be prepared.
    3)接上,将StartTime/EndTime显示指定排序规则为Latin1_General_BIN,则运行正确。
    ALTER TABLE T_DaylightSavingTime ALTER COLUMN StartTime
                varchar(100) COLLATE Latin1_General_BIN NOT NULL
    GO
    ALTER TABLE T_DaylightSavingTime ALTER COLUMN EndTime
                varchar(100) COLLATE Latin1_General_BIN NOT NULL
    GO想确认:
    1)按照SqlServer2000的说明,如果创建库时为指定排序规则,则使用实例的默认排序规则。创建表时未指定排序规则,则使用库的默认排序规则。
      从这里来看,应该没有排序规则冲突啊,为什么会发生Replace排序规则冲突。
    2)为什么在排序规则为Chinese_PRC_BIN的实例中不会出错,而在排序规则为Latin1_General_BIN的实例中却会发生错误。
    2)从长远来看,想做成库/表都不显示指定排序规则,只根据实例安装的排序规则决定(因为有中英文版本之分),
    可是本地测试中,取消了库/表(其他表有指定)的显示指定,最后做出的安装盘安装后,还是发生上述的错误。
    那该怎样写创建库/表的Sql文呢?是不是都定义成nvarchar,nchar,ntext会比较好?
      

  3.   

    查询的使用 
    ColumnName collate Chinese_PRC_BIN
    这样的方式即可,
    如:
    SELECT  (A.ulReserved collate Chinese_PRC_BIN)  AS 'TimeZone' ,....
      

  4.   

      [StartTime]            [VARCHAR](100)  COLLATE Latin1_General_BIN  NOT NULL, 
      [EndTime]              [VARCHAR](100) COLLATE Latin1_General_BIN NOT NULL, 试试