[tips]T_SQL @ 2000 AND 2005

if you can't create database diagrams on SQL server, execute the following T-SQL

None.gif USE   [ master ]
None.gif
GO
None.gif
EXEC  dbo.sp_dbcmptlevel  @dbname = ' CMDB ' @new_cmptlevel = 90
None.gif
GO
None.gif
None.gif
ALTER   AUTHORIZATION   ON   database ::dbname  TO  sa
None.gif


Cursor

None.gif --  Declare a cursor
None.gif
DECLARE  custom_cursor  CURSOR
None.gif 
None.gif
FOR      SELECT  EmployeeID, LastName, FirstName  FROM  Employees
None.gif
None.gif
--  declare a temporary various
None.gif
DECLARE   @tmopEmployeeID   INT
None.gif
DECLARE   @LastName   varchar ( 50 )
None.gif
DECLARE   @FirstName   varchar ( 50 )
None.gif
None.gif
--  open the cursor
None.gif
OPEN  custom_cursor
None.gif
None.gif
-- GET THE NEXT RECORD
None.gif
FETCH   NEXT   FROM  custom_cursor  INTO   @tmopEmployeeID  ,  @LastName @FirstName
None.gif
None.gif
--  GET SUCCESSFULLY
None.gif
WHILE   @@FETCH_STATUS   =   0
None.gif
None.gif
BEGIN  
None.gif    
PRINT   CONVERT ( VARCHAR ( 20 ),  @tmopEmployeeID + ' ' +   @LastName   +   ' . ' +   @FirstName
None.gif    
FETCH   NEXT   FROM  custom_cursor  INTO   @tmopEmployeeID  ,  @LastName @FirstName
None.gif
END
None.gif
None.gif
-- DELETE THE CURSOR
None.gif
DEALLOCATE  custom_cursor

 

None.gif -- 查询某一个库的所有存贮过程
None.gif
select   *   from  sysobjects  where  type = ' P '      这是查出所有存储过程的名称等信息 
None.gifsp_helptext 
[ 存储过程名 ]                             可以看到存储过程定义语句 
None.gif
select   *   from  sysobjects  where  type = ' V '      这是查出所有视图的名称等信息 取出某个视图的生成该视图的SQL语句 

 

None.gif -- 链接服务器,用于不同种类或者服务器之间操作数据
None.gif
Use  DBNAME
None.gif
GO  
None.gif
-- add link server--
None.gif
Exec  sp_addlinkedserver  @server   =   ' linkedservername ' @srvproduct = N ' SQL Server '  
None.gif
GO  
None.gif
--  list linked server--
None.gif
Exec  sp_linkedservers 
None.gif
Go  
None.gif
-- delete data before insert
None.gif
delete   from  tablename
None.gif
GO  
None.gif
--  insert data to the table
None.gif
insert  tablename  select   distinct   *   from  linkedservername.DBNAME.dbo.tablename
None.gif
GO  
None.gif
--  delete the linked server--
None.gif
Exec  sp_dropserver  ' hkhkpapt01 '  


when insert data, if you can't do successfully, pls note IDENTITY, change the column not as IDENTITY first, after finished to insert, change back

 

 

---处理sql for xml时的控制问题

当我们把查询结果作为xml输出的时候,如果有值为空值,应该怎么办呢?

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
select * from tablename
for xml auto, elements xsinil

 

 

--pivot

 

ContractedBlock.gif ExpandedBlockStart.gif Code
select * from
(
    
select Currency, sum(cost) as CurCount 
    
from dataTable
    
group by Currency
AS H
PIVOT 

Sum(H.CurCount) for 
H.Currency 
in ([RMB],[USD])
)
AS C

 

 

如果还想获取更详细的信息,可以添加 type,或者xmlschema参数,获取更为详细的信息

 

 

 

---index: view the internal and external index fragmentation, and then rebuild or reorganize the index

 

ContractedBlock.gif ExpandedBlockStart.gif Code
--Determine index fragmentation for all tables in the AdventureWorks database
SELECT OBJECT_NAME(dt.object_id), si.name,
dt.avg_fragmentation_in_percent, dt.avg_page_space_used_in_percent
FROM
(
SELECT object_id, index_id, avg_fragmentation_in_percent, avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID('DB_NAME'), NULLNULLNULL'DETAILED')
WHERE index_id <> 0as dt --does not return information about heaps
INNER JOIN sys.indexes si
ON si.object_id = dt.object_id
AND si.index_id = dt.index_id


alter index index_name on table_name reorganize/rebuild

 

 

不使用游标更新数据表的思路是

1 移动当前表的数据到临时表

2 根据条件获取需要更新的数据

3 一个select,结合1和2,然后insert到目标表中去

ok

--------2009华丽分割线---- 

如果你更改多SQL server的名字,那么在有的时候,会出现14262的错误,比如在操作ship log的时候。

查看sql server的名字和现在你的服务器的名字是否一致

select * from sys.sysservers

如果不一致,执行下面两个存储过程,然后重启Windows

sp_dropserver 'servername'

go

sp_addserver 'servername'

 

ok, 问题搞定

 

对于上面这个问题的进一步更新

SELECT @@SERVERNAME

USE master
GO

--Drop old server name
EXEC sp_dropserver 'currentservername'
GO

--Add correct/ current server name
EXEC sp_addserver 'newservername', 'local'
GO

--restart the sql server service

SELECT @@SERVERNAME

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值