SQL Server企业管理器生成的奇怪代码

更改列名

EXECUTE sp_rename N’dbo.Customers.City’, N’Tmp_CityName_2′, ‘COLUMN’
GO
EXECUTE sp_rename N’dbo.Customers.Tmp_CityName_2′, N’CityName’, ‘COLUMN’
GO

不明白为啥要改两遍。

将列更改为NOT NULL

BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_Shippers
(
ShipperID int NOT NULL IDENTITY (1, 1),
CompanyName nvarchar(40) NULL,
Phone nvarchar(24) NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_Shippers ON
GO
IF EXISTS(SELECT * FROM dbo.Shippers)
EXEC(’INSERT INTO dbo.Tmp_Shippers (ShipperID, CompanyName, Phone)
SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers WITH (HOLDLOCK TABLOCKX)’)
GO
SET IDENTITY_INSERT dbo.Tmp_Shippers OFF
GO
DROP TABLE dbo.Shippers
GO
EXECUTE sp_rename N’dbo.Tmp_Shippers’, N’Shippers’, ‘OBJECT’
GO
COMMIT

为啥要重新将表建立一遍,倒腾一遍数据呢?不是有 alter table alter column … 这样的语句吗?

更改某一列为主键

BEGIN TRANSACTION
GO
CREATE TABLE dbo.Tmp_Shippers
(
ShipperID int NOT NULL IDENTITY (1, 1),
CompanyName nvarchar(40) NOT NULL,
Phone nvarchar(24) NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT dbo.Tmp_Shippers ON
GO
IF EXISTS(SELECT * FROM dbo.Shippers)
EXEC(’INSERT INTO dbo.Tmp_Shippers (ShipperID, CompanyName, Phone)
SELECT ShipperID, CompanyName, Phone FROM dbo.Shippers WITH (HOLDLOCK TABLOCKX)’)
GO
SET IDENTITY_INSERT dbo.Tmp_Shippers OFF
GO
DROP TABLE dbo.Shippers
GO
EXECUTE sp_rename N’dbo.Tmp_Shippers’, N’Shippers’, ‘OBJECT’
GO
ALTER TABLE dbo.Shippers ADD CONSTRAINT
PK_Shippers PRIMARY KEY CLUSTERED
(
CompanyName
) ON [PRIMARY]


GO
COMMIT

这个更怪了,除了最后面的那个alter table,前面折腾个什么劲呢?

有一位同事说修改一个大表的表结构总有不成功,每次都超时。看了他操作才知道是在企业管理器里面直接点点改改。以后招人凡是在企业管理器里面直接操作的,一律不要。



Technorati Tags    

解决通过图书馆帐号下载ACS paper pdf的问题

通过图书馆帐号下载ACS paper的PDF文件,一直都存在问题,水木上也有过讨论[1][2][3]。我通过电子资源校外访问控制系统用ACS,倒是没有“出国开放访问”的问题,但仍然无法正常下载PDF。

一个正常的PDF下载过程大致是

1. Abstract page
http://infosource.lib.tsinghua.edu.cn:8080/~/WACS/pubs.acs.org/cgi-bin/abstract.cgi/jcisd8/asap/abs/ci7002472.html
2. PDF link
http://infosource.lib.tsinghua.edu.cn:8080/~/WACS/pubs.acs.org/cgi-bin/asap.cgi/jcisd8/asap/pdf/ci7002472.pdf
3. PDF link with session id, 真正的下载链接
http://infosource.lib.tsinghua.edu.cn:8080/~/WACS/pubs.acs.org/cgi-bin/asap.cgi/jcisd8/asap/pdf/ci7002472.pdf?sessid=3771

问题出在第二个页面上。第二个页面原本应该自动跳转到第三个链接,实际上每次都会自动跳转到

http://infosource.lib.tsinghua.edu.cn:8080/cgi-bin/asap.cgi/jcisd8/asap/pdf/ci7002472.pdf?sessid=3771

原因是第二个页面有下面这样的script,会让这种web proxy式的访问出现问题。

dest="/cgi-bin/asap.cgi/jcisd8/asap/pdf/ci700120v.pdf?sessid=8836
window.location.replace(location.protocol + '//' + location.host + dest);

跟踪页面访问的过程,查看各个访问中的源代码,使用的是Firefox的插件Tamper Data。

所以,解决的办法很简单,“禁止script”就可以了。在Maxthon中设置比较容易。只不过出现下面的链接后,需要点一下。

The page you have requested is loading. Click here if your browser does not automatically redirect you.

好几个月了,这点麻烦花废了自己很多时间,一定要记下来。

谷歌输入法词典 与 我说话的习惯

新版谷歌输入法(1.0.23.40),图标变成了新的样式谷歌输入法。在翻查设置看看有没有新功能的时候,发现了一个以前没用过的旧功能,就是“导出用户词典”。

这个词点是很有意义的。因为它是可以在各地通过Google帐户自动同步的,所以基本上可以看出自己说话都习惯讲哪些词。

导出后,是一个扩展名为.dic的文本文件。每行用TAB分割为三列。用Excel可以导入处理,不过要先用Notepad另存为Unicode,否则会是乱码。Google的spreedsheets只支持逗号分隔的文件,所以改名成.cvs并用spreedsheets导入没成功。

这个表格第一列是词,第二列(估计)是词频,第三列是这个词的拼音拼法。按照词频倒排序可以看出最常说什么话,但是往往排在最前面的都是一个字的词。做个假设

长词汇使用的可能性低,但是却往往更能反映习惯。词长与词频的乘积可以作为“习惯的衡量指标”。

这样的话,在Excel表里处理一下,我的前二十位词汇如下,中规中矩,呵呵,估计老板看了会高兴。

的
产品
谢谢
数据
系统
问题
可以
这个
工作
客户
项目
信息
如果
现在
在
我们
没有
是
销售
进行

Random posts

  • 中关村企业篮球赛,亚军
  • 聚会照片
  • Difference between Redirect and CNAME
  • Test Zoundry
  • Web应用中理想的化学标记法(Line Notation)的十一个要素