2011-11-14 34 views
1

在正在測試其使用asp.net和SQL Server 2005 在我輸入一個值作爲一個出版商場「飢渴的心靈」形式創建了一個應用程序表。但是當我不知道它存儲在哪個表中時。是否有任何查詢,發現其中包含數據的「飢渴的心靈」SQL查詢來查找包含具體的數據

回答

3
set ANSI_NULLS ON 
set QUOTED_IDENTIFIER ON 
GO 
create PROC [dbo].[SearchAllTables] 
(
    @SearchStr nvarchar(100) 
) 
AS 
BEGIN 


--exec SearchAllTables 'sdsd' 


    CREATE TABLE #Results (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) + '.' + QUOTENAME 
(TABLE_NAME) 
          ), 'IsMSShipped' 
           ) = 0 
     ) 

     WHILE (@TableName IS NOT NULL) AND (@ColumnName IS NOT NULL) 
     BEGIN 
      SET @ColumnName = 
      (
       SELECT MIN(QUOTENAME(COLUMN_NAME)) 
       FROM INFORMATION_SCHEMA.COLUMNS 
       WHERE  TABLE_SCHEMA = PARSENAME(@TableName, 2) 
        AND TABLE_NAME = PARSENAME(@TableName, 1) 
        AND DATA_TYPE IN ('char', 'varchar', 'nchar', 'nvarchar','ntext') 
        AND QUOTENAME(COLUMN_NAME) > @ColumnName 
      ) 

      IF @ColumnName IS NOT NULL 
      BEGIN 
       INSERT INTO #Results 
       EXEC 
       (
        'SELECT ''' + @TableName + '.' + @ColumnName + ''', LEFT(Cast(' + 
@ColumnName + ' AS NVARCHAR(Max)), 3630) 
        FROM ' + @TableName + ' (NOLOCK) ' + 
        ' WHERE Cast(' + @ColumnName + ' AS NVARCHAR(Max)) LIKE ' + 
@SearchStr2 
       ) 
      END 
     END 
    END 

    SELECT ColumnName, ColumnValue FROM #Results 
END 
+0

感謝Royi,你救了我! –

1

不,不是沒有一些掛羊頭賣狗肉的表。您通常期望知道您的模式的細節。

什麼你可以做的是寫某種形式的腳本來查詢系統表,構建查詢,以找到它。

我的意思是大多數DBMS」有包含如表名和列名的元數據數據庫系統表。例如,DB2/z的SYSIBM.SYSTABLESSYSIBM.SYSCOLUMNS

我不知道什麼是SQLServer的等價物是把我的頭頂部,因爲,如前所述,我大致知道我的架構的細節:-)

您可以使用這些表來構造查詢查詢「真實」的表格。