• 数据库常用管理语句


    KILL数据库进程,常用于需要单独操作的情况下,也用于死锁情况。

    代码段3:强制断开用户连接进程(也常用于死锁)。
    --kill数据库的连接进程.
    DECLARE @dbname sysname 
    SET @dbname='adirectory' --要关闭进程的数据库名
    declare @s nvarchar(1000)
    declare tb cursor local for
    select 'kill '+cast(spid as varchar)
    from master..sysprocesses 
    where dbid=db_id(@dbname)
    open tb 
    fetch next from tb into @s
    while @@fetch_status=0
    BEGIN
    --PRINT @s
    exec(@s)
    fetch next from tb into @s
    end
    close tb
    deallocate tb
    go

    --2 kill 数据库进程,需要复制生成的文本来执行。
    select COALESCE('kill ','')+cast(spid as varchar)
    from master..sysprocesses 
    where dbid=db_id(@dbname)

    4、查看数据库死锁进程。

    DECLARE @spid int,@bl int
    DECLARE s_cur CURSOR FOR 
    select  0 ,blocked
    from (select * from master..sysprocesses where  blocked>0 ) a 
    where not exists(select * from (select * from master..sysprocesses where  blocked>0 ) b 
    where a.blocked=spid)
    union select spid,blocked from master..sysprocesses where  blocked>0
    OPEN s_cur
    FETCH NEXT FROM s_cur INTO @spid,@bl
    WHILE @@FETCH_STATUS = 0
    begin
    if @spid =0 
      select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + ' 进程号,其执行的SQL语法如下'
    else
      select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ ' 被进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +' 阻塞,其当前进程执行的SQL语法如下'
    DBCC INPUTBUFFER (@bl )
    FETCH NEXT FROM s_cur INTO @spid,@bl
    end
    CLOSE s_cur
    DEALLOCATE s_cur
    3、更改数据库排序.更改数据库排序规则(不会改变原已有的数据)--更改为中文排序

    ALTER DATABASE dbName COLLATE Chinese_PRC_CI_AS

    --查看所有排序

    SELECT * FROM fn_helpcollations()

    2、查看数据库连接进程信息

    select name,count(0)as conn,
    hostname,program_name,loginame,
    s.login_time,s.net_address,nt_domain,s.cmd
    from master.dbo.sysprocesses s join master.dbo.sysdatabases d
    on s.dbid=d.dbid and d.name in (select name from master.dbo.sysdatabases)
    group by name,hostname,program_name,loginame,s.login_time,s.net_address,nt_domain,s.cmd 
    order by name
    1、当前数据库在做什么?for SQL 2005

    use master
    select sys.dm_exec_sessions.session_id,
    sys.dm_exec_sessions.host_name,
    sys.dm_exec_sessions.program_name,
    sys.dm_exec_sessions.client_interface_name,
    sys.dm_exec_sessions.login_name,
    sys.dm_exec_sessions.nt_domain,
    sys.dm_exec_sessions.nt_user_name,
    sys.dm_exec_connections.client_net_address,
    sys.dm_exec_connections.local_net_address,
    sys.dm_exec_connections.connection_id,
    sys.dm_exec_connections.parent_connection_id,
    sys.dm_exec_connections.most_recent_sql_handle,
    (select text from master.sys.dm_exec_sql_text(sys.dm_exec_connections.most_recent_sql_handle )) as sqlscript,
    (select db_name(dbid) from master.sys.dm_exec_sql_text(sys.dm_exec_connections.most_recent_sql_handle )) as databasename,
    (select object_id(objectid) from master.sys.dm_exec_sql_text(sys.dm_exec_connections.most_recent_sql_handle )) as objectname
    from sys.dm_exec_sessions inner join sys.dm_exec_connections
    on syssys.dm_exec_connections.session_id=sys.dm_exec_sessions.session_id
    0、获取数据库的物理路径:

    CREATE FUNCTION dbo.ufnGetSysDBPath(
        @dbName VARCHAR(100)
    ) RETURNS VARCHAR(200)
    AS
    BEGIN
        DECLARE @returnValue VARCHAR(200)
    IF SERVERPROPERTY ('BuildClrVersion') is not null
        BEGIN 
        --PRINT 'Sql Server 2005 '
    SET @returnValue= (SELECT SUBSTRING(physical_name, 1, CHARINDEX(@dbName+'.mdf', LOWER(physical_name)) - 1) FROM master.sys.master_files WHERE database_id = DB_ID(@dbName) AND file_id = 1)
        END 
    ELSE 
        BEGIN 
        --PRINT 'Sql Server 2000'
    SET @returnValue= (SELECT SUBSTRING(filename, 1, CHARINDEX(@dbName+'.mdf', LOWER(filename)) - 1) FROM master..sysaltfiles WHERE dbid = DB_ID(@dbName) AND fileid = 1)    
        END 
    RETURN @returnValue     
    END
    使用: 注意项: (默认情况下,数据库名与数据库文件相同名) 如有不同,可修改部分代码后运行

    SELECT dbo.ufnGetSysDBPath('master')


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhou__zhou/archive/2007/09/01/1768008.aspx

  • 相关阅读:
    【AtCoder】ARC097 (C
    【51nod】1123 X^A Mod B (任意模数的K次剩余)
    【洛谷】P4207 [NOI2005]月下柠檬树
    【POJ】2454.Jersey Politics
    【POJ】2069.Super Star
    【POJ】2420.A Star not a Tree?(模拟退火)
    【POJ】1026.Cipher
    【POJ】3270.Cow Sorting
    【POJ】1286.Necklace of Beads
    【POJ】1067.取石子游戏
  • 原文地址:https://www.cnblogs.com/0000/p/1516282.html
Copyright © 2020-2023  润新知