﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-sealyu-随笔分类-数据库</title><link>http://www.blogjava.net/sealyu/category/30677.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 22 Apr 2008 15:43:36 GMT</lastBuildDate><pubDate>Tue, 22 Apr 2008 15:43:36 GMT</pubDate><ttl>60</ttl><item><title>SQL Server 2000 错误的解决方法（ Error:The identifier that starts with 'xxxxx' is too long. Maximum length is 128.）</title><link>http://www.blogjava.net/sealyu/archive/2008/04/22/194909.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Tue, 22 Apr 2008 15:36:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2008/04/22/194909.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/194909.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2008/04/22/194909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/194909.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/194909.html</trackback:ping><description><![CDATA[今天在更新数据库字段信息的时候，在SQL Server 2000 中试图使用如下sql语句：<br />
UPDATE tables1 SET sql= "select id&nbsp; from table2 with(nolock)&nbsp;&nbsp; &nbsp;<br />
inner join table3 request with(nolock) on table3 .id = table2.column1Id&nbsp; &nbsp;<br />
inner join table4 bundle with(nolock) on table4 .id = table2..column2Id&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp;<br />
where table1.series in('220-602','220-603','220-604','JK0-602','JK0-603',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;'JK0-604','N10-003','JK0-012','PK0-002','SY0-101','JK0-010','HT0-201',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;'221-602','221-603','221-604','JK1-602','JK1-603','JK1-604','N11-103',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;'JK1-012','PK1-002','SY1-101','JK1-010','HT1-201','PD0-001','PD1-001',&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;'SK0-002','RF0-001')"<br />
<br />
报错：The identifier that starts with 'xxxxx' is too long. Maximum length is 128. 此sql字段为varchar(8000), 显然长度并没有超出8000. Google了一下，发现并不是字段长度的问题，原来是引号上面出了问题。<br />
解决方法：用两个单引号将要更新的值括起来，值中有引号的地方全部替换为两个双引号，修改后的sql为：<br />
UPDATE tables1 SET sql= 'select id&nbsp; from table2 with(nolock)&nbsp;&nbsp; &nbsp;<br />
inner join table3 request with(nolock) on table3 .id = table2.column1Id&nbsp; &nbsp;<br />
inner join table4 bundle with(nolock) on table4 .id = table2..column2Id&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
where table1.series in(""220-602"",""220-603"",""220-604"",""JK0-602"",""JK0-603"",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ""JK0-604"",""N10-003"",""JK0-012"",""PK0-002"",""SY0-101"",""JK0-010"",""HT0-201"",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ""221-602"",""221-603"",""221-604"",""JK1-602"",""JK1-603"",""JK1-604"",""N11-103"",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ""JK1-012"",""PK1-002"",""SY1-101"",""JK1-010"",""HT1-201"",""PD0-001"",""PD1-001"",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ""SK0-002"",""RF0-001"")'<br />
<br />
执行后解决问题。<br />
<br />
<br />
<img src ="http://www.blogjava.net/sealyu/aggbug/194909.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2008-04-22 23:36 <a href="http://www.blogjava.net/sealyu/archive/2008/04/22/194909.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sql server 中删除默认约束的通用sql脚本</title><link>http://www.blogjava.net/sealyu/archive/2008/04/17/193755.html</link><dc:creator>seal</dc:creator><author>seal</author><pubDate>Thu, 17 Apr 2008 06:31:00 GMT</pubDate><guid>http://www.blogjava.net/sealyu/archive/2008/04/17/193755.html</guid><wfw:comment>http://www.blogjava.net/sealyu/comments/193755.html</wfw:comment><comments>http://www.blogjava.net/sealyu/archive/2008/04/17/193755.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/sealyu/comments/commentRss/193755.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/sealyu/services/trackbacks/193755.html</trackback:ping><description><![CDATA[在SQL Server 中，如果给表的一个字段设置了默认值，就会在系统表sysobjects中生成一个默认约束。<br />
如果想删除这个设置了默认值的字段（假设此字段名column1），<br />
执行&#8220;ALTER TABLE table1 DROP COLUMN column1&#8221;时就会报错：<br />
The object 'DF__xxxxxxxxxxx' is dependent on column 'column1'. <br />
ALTER TABLE DROP COLUMN column1failed because one or more objects access this column.<br />
<br />
所以在删除此字段时需要先将系统表中的对应默认约束删除， 可以使用下面的脚本进行删除：<br />
-- this script drops the default constraint which is generated by the setting of default value.<br />
DECLARE @tablename VARCHAR(100), @columnname VARCHAR(100), @tab VARCHAR(100)<br />
SET @tablename='CountryGroupEmailAndWaitAux'<br />
SET @columnname='actionOfHasNoValidEmail'<br />
<br />
declare @defname varchar(100)<br />
declare @cmd varchar(100)<br />
<br />
select @defname = name<br />
FROM sysobjects so <br />
JOIN sysconstraints sc<br />
ON so.id = sc.constid<br />
WHERE object_name(so.parent_obj) = @tablename<br />
AND so.xtype = 'D'<br />
AND sc.colid =<br />
(SELECT colid FROM syscolumns<br />
WHERE id = object_id(@tablename) AND<br />
name = @columnname)<br />
<br />
select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname<br />
if @cmd is null print 'No default constraint to drop'<br />
exec (@cmd)<br />
<br />
在删除对应的默认约束后，执行：<br />
ALTER TABLE table1 DROP COLUMN column1<br />
即可删除字段。<br />
<img src ="http://www.blogjava.net/sealyu/aggbug/193755.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/sealyu/" target="_blank">seal</a> 2008-04-17 14:31 <a href="http://www.blogjava.net/sealyu/archive/2008/04/17/193755.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>