我有一个有几百张桌子的数据库
我需要在所有表的任何列中找到特定的字符串。
我将如何解决这个问题?
我正在使用MSSQL Server 2012.连接到此数据库的网站是由ASP.NET C#2012开发的.最近我的数据库被黑客入侵或通过垃圾邮件链接注入,它们都是以相同的方式启动的
<div style="display:none"> .....
Run Code Online (Sandbox Code Playgroud)
在一些帮助下我创建了一个清除更新字段的功能,但问题是几天之后又发生了同样的事情!
我可以继续清理数据库,但我正试图找到一个终极解决方案,以防止这种情况发生好...任何想法?
我想在整个MS SQL 2000数据库中搜索一个值.这只是为了帮助发展.在考虑这个问题时请记住这一点.
这将获取我正在寻找的所有表名和数据类型列:
SELECT Columns.COLUMN_NAME, tables.TABLE_NAME
FROM INFORMATION_SCHEMA.Columns as Columns
JOIN INFORMATION_SCHEMA.TABLES as tables
On Columns.TABLE_NAME = tables.TABLE_NAME
WHERE Columns.DATA_TYPE = 'INT'
Run Code Online (Sandbox Code Playgroud)
我在想这样的事情:
-- Vars
DECLARE @COUNTER INT
DECLARE @TOTAL INT
DECLARE @TABLE CHAR(128)
DECLARE @COLUMN CHAR(128)
DECLARE @COLUMNTYPE CHAR(128)
DECLARE @COLUMNVALUE INT
-- What we are looking for
SET @COLUMNTYPE = 'INT'
SET @COLUMNVALUE = 3
SET @COUNTER = 0
-- Find out how many possible columns exist
SELECT @TOTAL = COUNT(*)
FROM INFORMATION_SCHEMA.Columns as Columns
JOIN INFORMATION_SCHEMA.TABLES …Run Code Online (Sandbox Code Playgroud) 此查询可以从任何SQL Server数据库的所有表/视图中搜索任何字符串值(表名,表数据等),当您将任何字符串放在" 此处的文本 "时,它将从所有表中搜索您的给定字符串/视图存在于该数据库中,
DECLARE @SearchStr nvarchar(100)
SET @SearchStr = 'your text here'
DECLARE @Results TABLE(ColumnName nvarchar(370), ColumnValue nvarchar(3630))
SET NOCOUNT ON
DECLARE @TableName nvarchar(256), @ColumnName nvarchar(128), @SearchStr2 nvarchar(110)
SET @TableName = ''
SET @SearchStr2 = QUOTENAME('%' + @SearchStr + '%','''')
WHILE @TableName IS NOT NULL
BEGIN
SET @ColumnName = ''
SET @TableName =
(
SELECT MIN(QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME))
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
AND QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME) > @TableName
AND OBJECTPROPERTY(
OBJECT_ID(
QUOTENAME(TABLE_SCHEMA) …Run Code Online (Sandbox Code Playgroud)