<!--defaultCSS-->
DECLARE tnames_cursor CURSOR
FOR
SELECT parentId
FROM jhtdb.dbo.SC_TABLELIST
OPEN tnames_cursor
DECLARE @tablename int
FETCH NEXT FROM tnames_cursor INTO @tablename
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
declare @id int
set @id = jhtdb.dbo.getIdByName(@tablename)
--print @tablename
if(@id <> 0)
begin
update SC_TABLELIST set parentId=@id where parentId=@tablename
end
END
FETCH NEXT FROM tnames_cursor INTO @tablename
END
CLOSE tnames_cursor
DEALLOCATE tnames_cursor
2、強制類型轉換
CAST(@tablename as int) 其中@tablename爲需要被轉換的值
3、去除熱備份數據庫的只讀/備用狀態
use master
go
RESTORE DATABASE JHTDBTMP
WITH RECOVERY
其中JHTDBTMP爲數據庫的名稱
sp_who -- 查看所有用戶連接
sp_who 'active' -- 查看活動用戶連接
sp_who 'sa' -- 查看用戶sa連接
SELECT * FROM
[Master].[dbo].[SYSPROCESSES] WHERE [DBID]
IN
(
SELECT
[DBID]
FROM
[Master].[dbo].[SYSDATABASES]
WHERE
NAME='數據庫名稱'
)
6、強制關閉數據庫連接
USE master
go
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[p_killspid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[p_killspid]
go
create proc p_killspid
@dbname varchar(200) --要關閉進程的數據庫名
as
declare @programName nvarchar(200),
@spid nvarchar(20)
declare cDblogin cursor for
select cast(spid as varchar(20)) AS spid from master..sysprocesses where dbid=db_id(@dbname)
open cDblogin
fetch next from cDblogin into @spid
while @@fetch_status=0
begin
--防止自己終止自己的進程
--否則會報錯不能用KILL 來終止您自己的進程。
IF @spid <> @@SPID
exec( 'kill '+@spid)
fetch next from cDblogin into @spid
end
close cDblogin
deallocate cDblogin
go
調用方法:exec p_killspid 'jhtdb'
7、MSSQL中常用的全局變量解析
@@FETCH_STATUS 返回語句的狀態
0 FETCH statement was successful.
-1 FETCH statement failed or the row was beyond the result set.
-2 Row fetched is missing.
@@ROWCOUNT 返回上一語句影響的行數
@@SPID 返回當前用戶進程回話的id
@@TRANCOUNT 返回當前連接中包含的事物數量
@@ERROR 返回上一語句執行時出錯的數量