--一下脚本指定数据库之后执行可以得到没有主键的表 --SQL查找数据库中所有没有主键的数据表脚本 --运行脚本后在消息中可能会显示下面现象中的一种: --(1)数据库中所有数据表都有主键(则证明所有数据表都有主键) --(2)当前数据表[数据表名]没有主键(则可方便找到没主键的数据表) declare @TableName nvarchar(250)--游标中取出的数据表名 declare @AllTableHasPrimaryKey int--是否全部都有主键 set @AllTableHasPrimaryKey=1 --声明读取数据库所有数据表名和编号的游标 declare mycursor cursor for select name from dbo.SysObjects WHERE OBJECTPROPERTY(ID, 'IsUserTable') = 1 order by name --打开游标 open mycursor --从游标里取出数据赋值到我们刚才声明的数据表名变量中 fetch next from mycursor into @TableName --如果游标执行成功 while (@@fetch_status=0) begin --判断当前数据表是否存在主键 IF NOT EXISTS (select * from information_schema.key_column_usage where TABLE_NAME=''+@TableName+'') begin set @AllTableHasPrimaryKey=0; print '当前数据表['+@TableName+']没有主键' end --用游标去取下一条记录 fetch next from mycursor into @TableName end if(@AllTableHasPrimaryKey=1) begin print '数据库中所有数据表都有主键' end --关闭游标 close mycursor --撤销游标 deallocate mycursor --脚本代码结束