-- 声明表变量 DECLARE @userTable TABLE (table_name NVARCHAR(20)); -- 将源表中的数据插入到表变量中 INSERT INTO @userTable(table_name) SELECT name FROM sysobjects WHERE xtype = 'U' AND name LIKE 'user_[1234567890]%'; -- 声明变量 DECLARE @sql NVARCHAR(MAX),@index_name NVARCHAR(30),@table_name NVARCHAR(20); WHILE EXISTS(SELECT table_name FROM @userTable) BEGIN SELECT @table_name = table_name FROM @userTable ORDER BY table_name; BEGIN TRY --检查索引 SET @index_name = 'IX_' + @table_name; IF NOT EXISTS(SELECT 1 FROM sysindexes a JOIN sysindexkeys b ON a.id = b.id AND a.indid = b.indid JOIN sysobjects c ON b.id = c.id JOIN syscolumns d ON b.id = d.id AND b.colid = d.colid WHERE a.indid NOT IN(0,255) AND c.xtype = 'U' AND c.name = @table_name AND a.name = @index_name) BEGIN SET @sql='CREATE NONCLUSTERED INDEX '+@index_name+' ON '+@table_name+'(userId ASC) INCLUDE(id,......) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]' EXEC (@sql); END --检查唯一索引 SET @index_name='IXDistinct_' + @table_name; IF NOT EXISTS(SELECT 1 FROM sysindexes a JOIN sysindexkeys b ON a.id=b.id AND a.indid=b.indid JOIN sysobjects c ON b.id=c.id JOIN syscolumns d ON b.id=d.id AND b.colid=d.colid WHERE a.indid NOT IN(0,255) AND c.xtype='U' AND c.name=@table_name AND a.name=@index_name) BEGIN SET @sql='ALTER TABLE ' + @table_name + ' ADD CONSTRAINT '+@index_name+' UNIQUE NONCLUSTERED(userId ASC,.....) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]' EXEC (@sql); EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'userId和....组成的唯一键索引' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=@table_name, @level2type=N'CONSTRAINT',@level2name=@index_name END END TRY BEGIN CATCH SELECT @table_name AS tablename, ERROR_MESSAGE() AS ErrorMessage, ERROR_SEVERITY() AS ErrorSeverity, ERROR_STATE() AS ErrorState END CATCH DELETE FROM @userTable WHERE table_name=@table_name; END