SQL SERVER语句 增加字段,查主键,查看表空间大小,查有无主键

本文介绍了如何在SQL Server中进行数据库操作,包括增加字段、检查主键、查看表空间大小以及使用变更数据捕获(CDC)服务。内容涵盖通过SQL语句查询主键、获取表的所有字段和大小,以及开启和管理CDC服务以跟踪数据变化。还提供了用于全量和增量数据同步的示例视图和存储过程。
摘要由CSDN通过智能技术生成

 


 SELECT  b.name AS '表名' ,
            CASE WHEN c.NAME IS NULL THEN '无'
                 ELSE '有'
            END AS '主键'
    FROM    sysobjects b
            LEFT JOIN ( ( SELECT    OBJECT_NAME(a.parent_obj) AS name
                          FROM      sysobjects a
                          WHERE     xtype = 'PK'
                        ) ) c ON b.NAME = c.name
    WHERE   b.xtype = 'U'
    ORDER BY c.NAME DESC


 
查询所有字段名:

select NAME from sys.columns where object_id=object_id('A') 

查表明

select name from sys.objects where type='U' and schema_id=1 and is_ms_shipped=0

查询视图名称

select * from  information_schema.views

查条数

SELECT A.NAME ,B.ROWS FROM sysobjects A JOIN sysindexes B ON A.id = B.id WHERE A.xtype = 'U' AND B.indid IN(0,1) ORDER BY B.ROWS DESC

查看表的大小:

exec sp_spaceused '表明'   

 

 

 

 

 

添加字段

 

 

 

查主键

create table #H(name varchar(50) not null,name_pk varchar(50) null,name_pk1 varchar(50) null )
insert into #H exec sp_helpindex N'text1'    
insert into #H exec sp_helpindex 'text2'    
insert into #H exec sp_helpindex 'text3'    ;

create table H(name varchar(50) not null,name_pk varchar(50) null,name_pk1 varchar(50) null)
insert into H select *   from #H


delete from #H

alter table Lis_B add primary key(sn, sname)

 

 

select table_name,column_name
from INFORMATION_SCHEMA.KEY_COLUMN_USAGE
where table_name=''
查看表空间大小

create procedure dbo.proc_getsize
as
begin
create table #temp
(
   t_id int primary key identity(1,1),
   t_name sysname,                        --表名
   t_rows int,                            --总行数
   t_reserved varchar(50),                --保留的空间总量
   t_data varchar(50),                    --数据总量
   t_indexsize varchar(50),               --索引总量
   t_unused varchar(50)                   --未使用的空间总量
)

exec SP_MSFOREACHTABLE N'insert into #temp(t_name,t_rows,t_reserved,t_data,t_indexsize,t_unused) exec SP_SPACEUSED ''?'''

select t_id,t_name,t_rows,t_reserved,t_indexsize,t_unused,t_data,
    case when cast(replace(t_data,' KB','') as float)>1000000 then cast(cast(replace(t_data,' KB','') as float)/1000000 as varchar)+' GB' 
        when cast(replace(t_data,' KB','') as float)>1000 then cast(cast(replace(t_data,' KB','') as float)/1000 as varchar)+' MB' 
    else t_data end as datasize
from #temp 
order by cast(replace(t_data,' KB','') as float) desc

drop table #temp

第一步:开启CDC服务

EXECUTE sys.sp_cdc_enable_db

第二步:开启某张表的CDC

 

exec

sys.sp_cdc_enable_table

@source_schema ='dbo',@source_name='Lis_ReportResult',@capture_instance='Lis_ReportResult'

,@supports_net_changes=0,@role_name=null

第三步:修改CDC的保存记录时间点

--显示原有配置

EXEC sp_cdc_help_jobs

GO

--更改数据保留时间为7天

EXECUTE sys.sp_cdc_change_job

    @job_type = N'cleanup',

    @retention=10080

GO

----重启一下作业,以使设置生效

----停用作业

--EXEC sys.sp_cdc_stop_job N'cleanup'

--GO

----启用作业

--EXEC sys.sp_cdc_start_job N'cleanup'

--GO

----再次查看

--EXEC sp_cdc_help_jobs

--GO

 

全量:

CREATE VIEW V_Clinic_Item_ODS_全量 AS

select *

,getdate() as     LastUpdateDtTm

,0 as seqval

,0 as IsDeleted

from [ECISPlatform_4.1].dbo.Clinic_Item as a with(nolock)

增量:

CREATE view V_MH_AccordingRecord_ODS_CDC

as

SELECT [AID]

      ,[TID]

      ,[PVID]

      ,[RecordDT]

      ,[SystemID]

      ,[SymptomID]

      ,[AccordingItemID]

      ,[Operator]

,c.tran_begin_time as LastUpdateDtT

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值