2014-12-23 81 views
0

我在Microsoft SQL Server中有一個數據庫,其表名看起來像firstpart.secondpart。例如,Accounts.BankTransactionBASE或CustomerService.SurveyCommentBASE。我不認爲整個名稱是表的名稱,因爲當我使用sys.tables在數據庫中找到表的名稱時,它只給出SurveyCommentBASE名稱的第二部分。請看下面的圖片。表名之前的部分是什麼?

enter image description here

我有兩個問題

  1. 叫什麼名字的第一部分?
  2. 我如何(更改'select * from sys.tables'sql命令)獲得 名稱的第一部分以及第二個名稱,所以我可以 執行我的查詢?

回答

2

SQL Server中的命名格式是:servername.databasename.schemaname.tablename。通常只需要最後兩個;除非您在多個數據庫和/或服務器上工作,否則數據庫名稱和服務器名稱通常被省略爲不必要的。

就你而言,第一部分是模式名稱,第二部分是表名。在SQL Server中同時使用模式和表名稱來引用表,視圖等被認爲是一個好習慣。

1

要回答你的第二個問題,你可以從SYS模式與獲取所有用戶表的模式和表名:

SELECT s.name + '.' + t.name 
FROM sys.schemas s JOIN sys.tables t ON t.schema_id=s.schema_id 
WHERE t.type='U' 
1

如這裏已經說過其他的答案,表名之前的部分是架構。一個簡單的編輯到您的查詢將得到它爲您:

select schema_name(schema_id), * from sys.tables