Sql server 更新数据库中的所有表

Sql server 更新数据库中的所有表,sql-server,tsql,dynamic-sql,Sql Server,Tsql,Dynamic Sql,我正在更新数据库中的所有表,但在获取正确的代码时遇到了问题。我收到了下面的代码,但作为以前的解决方案,我尝试使用SP\msforeachtable,无法获得正确的格式。这方面的帮助会很好。代码如下: USE TPP_DB GO DECLARE @SQL NVARCHAR(MAX) EXEC sp_MSforeachtable 'SELECT @SQL = ( SELECT '' UPDATE ''' + QUOTENAME(SCHEMA_NAME(o.[schema_id])) +

我正在更新数据库中的所有表,但在获取正确的代码时遇到了问题。我收到了下面的代码,但作为以前的解决方案,我尝试使用
SP\msforeachtable
,无法获得正确的格式。这方面的帮助会很好。代码如下:

USE TPP_DB
GO

DECLARE @SQL NVARCHAR(MAX)

EXEC sp_MSforeachtable

'SELECT @SQL = (
    SELECT ''
UPDATE ''' + QUOTENAME(SCHEMA_NAME(o.[schema_id])) + ''.'''' + QUOTENAME(o.name) + '''
SET ''' + QUOTENAME(c.name) + '' = NULL
WHERE '' + QUOTENAME(c.name) + '' = ''''' 
FROM sys.columns c
JOIN sys.objects o ON c.[object_id] = o.[object_id]

FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')

PRINT @SQL

EXEC sys.sp_executesql @SQL'
你可以这样试试

SELECT 'UPDATE ' + Schema_name(t.schema_id) + '.'
       + t.NAME + ' SET ' + c.NAME + ' =NULL WHERE ' + c.NAME
       + ' ='''';'
FROM   sys.tables AS t
       INNER JOIN sys.columns c
               ON t.OBJECT_ID = c.OBJECT_ID
--WHERE  c.NAME = 'ModifiedDate'
ORDER  BY Schema_name(t.schema_id),
          t.NAME; 

使用标签dbms!(这看起来一点也不像ANSI SQL…)我绑得太快了,标记了enter,并将其放入SQL和Server中。谢谢你在发帖3秒后的回复。只有3秒?那一定是我的个人记录!我在按下enter键后立即意识到了我的错误,我正在修复它,当你发表评论时,我无法在你进入它之前添加三个标记。这一个可以工作,但我需要将其放入存储过程中,我需要它在不复制和粘贴输出的情况下运行。无论如何,我用光标解析表解决了这个问题。