ฉันจะกำหนดอินสแตนซ์ของ SQL Server ที่ติดตั้งและรุ่นได้อย่างไร


224

ฉันพยายามกำหนดอินสแตนซ์ของ sql server / sql express ที่ฉันติดตั้ง (ด้วยตนเองหรือโดยทางโปรแกรม) แต่ตัวอย่างทั้งหมดบอกให้ฉันเรียกใช้แบบสอบถาม SQL เพื่อตรวจสอบว่าสมมติว่าฉันเชื่อมต่อกับอินสแตนซ์เฉพาะแล้ว .


1
นี่คือลิงค์วิธีการระบุด้วย sqlcmd msdn.microsoft.com/en-us/library/ms165662%28v=sql.90%29.aspx

วิธีค้นหาอินสแตนซ์ของเซิร์ฟเวอร์ SQL ของคุณ (ชื่อเซิร์ฟเวอร์) และรุ่น youtube.com/watch?v=DLrxFXXeLFk
mloskot

คุณสามารถบอกฉันแบบสอบถาม SQL ที่คุณพูดถึง?
LearnByReading

1
@LearnByReading ดูคำตอบของ Mohammed Ifteqar Ahmed ด้านล่าง
ลุค

2
คุณสามารถซักถามรีจิสทรี: pmichaels.net/2016/02/12/…
Paul Michaels

คำตอบ:


209

ที่บรรทัดคำสั่ง:

SQLCMD -L

หรือ

OSQL -L

(หมายเหตุ: ต้องเป็นเมืองหลวง L)

นี่จะแสดงรายการเซิร์ฟเวอร์ sql ทั้งหมดที่ติดตั้งในเครือข่ายของคุณ มีตัวเลือกการกำหนดค่าที่คุณสามารถตั้งค่าเพื่อป้องกันไม่ให้ SQL Server แสดงในรายการได้ เพื่อทำสิ่งนี้...

ที่บรรทัดคำสั่ง:

svrnetcn

ในรายการโปรโตคอลที่เปิดใช้งานเลือก 'TCP / IP' จากนั้นคลิกคุณสมบัติ มีช่องทำเครื่องหมายสำหรับ 'ซ่อนเซิร์ฟเวอร์'


2
ฉันชอบตัวเลือกบรรทัดคำสั่ง แต่ฉันได้ผลลัพธ์ที่หลากหลายเมื่อฉันลองพวกเขาในกล่องของนักพัฒนาซอฟต์แวร์ (ไม่ใช่เครือข่าย); โดยทั่วไป "sqlcmd -L" เป็นสิ่งเดียวที่ทำงานได้และเฉพาะในกรณีที่บริการ SQL Server Browser Service ทำงานอยู่ เป็นสิ่งที่คาดหวังหรือไม่?
Matt

ฉันรักมันเมื่อมันง่ายและตรง ฉันพยายามหาชื่อเซิร์ฟเวอร์ที่ถูกต้องเพื่อป้อนให้กับอินสแตนซ์ของ Amazon Web Service SQL Server ThanX
Mehdi LAMRANI

1
คำสั่งที่ดี แต่ด้วยเหตุผลบางอย่างมันตรวจพบอินสแตนซ์ SQLExpress บนเครือข่ายที่คำนวณ แต่ล้มเหลวในการตรวจสอบอินสแตนซ์ SQLExpress บนเครื่องของฉัน
sparebytes

1
@sparebytes: เหตุผลที่นี่: dba.stackexchange.com/questions/18499/…
DonBecker

ลอง:C:\> sqllocaldb i
Contango

82

คุณสามารถสอบถามค่ารีจิสตรีนี้เพื่อรับ SQL เวอร์ชันโดยตรง:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup\CurrentVersion

หรือคุณสามารถสอบถามชื่ออินสแตนซ์ของคุณแล้วใช้ sqlcmd ด้วยชื่ออินสแตนซ์ที่คุณต้องการ:

ในการดูชื่ออินสแตนซ์ของคุณ:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names

จากนั้นดำเนินการนี้:

SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')

หากคุณใช้ C ++ คุณสามารถใช้รหัสนี้เพื่อรับข้อมูลรีจิสทรี


('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition') แสดงเฉพาะเซิร์ฟเวอร์เท่านั้นที่รันเพียงหนึ่ง แต่ไม่ใช่อินสแตนซ์หรือติดตั้ง แต่หยุดเซิร์ฟเวอร์
Gennady Vanin ГеннадийВанин

ขอบคุณคำค้นหาใช้ได้สำหรับฉัน ฉันมีเครื่องและต้องการทราบอินสแตนซ์เริ่มต้นและอินสแตนซ์ SQL Express ซึ่งเป็น 2008 และ 2008 R2 ฉันเชื่อมต่อกับแต่ละอินสแตนซ์และเรียกใช้แบบสอบถามและได้รับหมายเลขเวอร์ชัน Googling ตัวเลขนั้นง่ายมาก
Meligy

3
หมายเหตุดูเหมือนว่า "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ <version> \ Tools \ ClientSetup \ CurrentVersion" และ "HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ Instance Names" ในส่วน 32 บิต รีจิสทรีในขณะที่เส้นทางที่แท้จริงไปยังอินสแตนซ์: "Server \ <instancename> HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft
NGaida

รีจิสทรีคือคำจำกัดความที่มาของซอฟต์แวร์ที่ติดตั้ง โซลูชันของคุณทำให้ฉันสามารถไปยังแหล่งข้อมูลโดยตรงแทนที่จะใช้เครื่องมือ CLI ซึ่งท้ายที่สุดใช้ค่ารีจิสตรีหรือสแน็ปอิน MMC ซึ่งใช้รีจิสตรีด้วย สมบูรณ์แบบ
barrypicker

76

อินสแตนซ์ทั้งหมดที่ติดตั้งควรแสดงใน Services Snap-In ใน Microsoft Management Console ในการรับชื่ออินสแตนซ์ไปที่ Start | เรียกใช้ | พิมพ์ Services.msc และค้นหารายการทั้งหมดด้วย "Sql Server (ชื่ออินสแตนซ์)"


13
คำสั่ง PowerShell ที่เทียบเท่า:Get-Service | ?{ $_.Name -like "MSSQL*" }
orad

2
คอมพิวเตอร์ของฉันแสดงว่า MSSQL $ SQLEXPRESS กำลังทำงานโดยใช้ชื่อที่แสดง SQL Server (SQLEXPRESS) .... แต่ฉันจะป้อนชื่อนี้ในชื่อเซิร์ฟเวอร์ได้อย่างไร การทดสอบการเชื่อมต่อแสดงข้อผิดพลาดเช่น ... เครือข่ายที่เกี่ยวข้องหรือข้อผิดพลาดเฉพาะของอินสแตนซ์ที่เกิดขึ้นเมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์ sql
webzy

47

- T-SQL Query เพื่อค้นหารายการอินสแตนซ์ที่ติดตั้งบนเครื่อง

DECLARE @GetInstances TABLE
( Value nvarchar(100),
 InstanceNames nvarchar(100),
 Data nvarchar(100))

Insert into @GetInstances
EXECUTE xp_regread
  @rootkey = 'HKEY_LOCAL_MACHINE',
  @key = 'SOFTWARE\Microsoft\Microsoft SQL Server',
  @value_name = 'InstalledInstances'

Select InstanceNames from @GetInstances 

สิ่งที่ดี! ฉันคิดว่ามันจำเป็นต้องเชื่อมต่อด้วยsaใช่ไหม
jyz

3
+1 แหล่งที่มาของข้อมูลเกี่ยวกับอินสแตนซ์นั้นเหมือนกับคำตอบของ Brian บางคนอาจเขียนรหัส C # เพื่อรับค่าจาก Windows Registry ซึ่งทำให้ฉันคิดว่าคำตอบนั้นซ้ำซ้อนชั่วครู่ แต่ก็ดีที่จะรู้เกี่ยวกับ xp_regread #thanks
Mzn

ผลลัพธ์แบบสอบถามเป็นชื่ออินสแตนซ์เท่านั้นเป็นไปได้หรือไม่ที่จะเพิ่มระดับความเข้ากันได้สำหรับแต่ละอินสแตนซ์ให้กับผลลัพธ์
Marwan Almukh

16

ฉันรู้ว่ากระทู้นี้ค่อนข้างเก่า แต่ฉันเจอกระทู้นี้ก่อนที่ฉันจะพบคำตอบที่ฉันค้นหาและคิดว่าฉันจะแบ่งปัน หากคุณใช้ SQLExpress (หรือ localdb) มีวิธีที่ง่ายกว่าในการค้นหาชื่ออินสแตนซ์ของคุณ ที่ประเภทบรรทัดคำสั่ง:

> sqllocaldb i

นี่จะแสดงรายการชื่ออินสแตนซ์ที่คุณติดตั้งไว้ในเครื่อง ดังนั้นชื่อเซิร์ฟเวอร์แบบเต็มของคุณควรรวม (localdb) \ หน้าชื่ออินสแตนซ์ที่จะเชื่อมต่อ นอกจากนี้ sqllocaldb ยังอนุญาตให้คุณสร้างอินสแตนซ์ใหม่หรือลบออกรวมทั้งกำหนดค่า ดู: SqlLocalDB ยูทิลิตี้


11

หากคุณเพียงต้องการที่จะเห็นสิ่งที่ติดตั้งบนเครื่องที่คุณกำลังเข้าสู่ระบบฉันคิดว่ากระบวนการแบบแมนนวลที่ตรงไปตรงมาที่สุดคือเพียงเปิดตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL (จากเมนูเริ่ม) ซึ่งแสดง SQL Services ทั้งหมด (และเฉพาะบริการ SQL) บนฮาร์ดแวร์นั้น (ทำงานหรือไม่) สิ่งนี้ถือว่า SQL Server 2005 หรือสูงกว่า; คำแนะนำของdotnetengineerในการใช้ Services Management Console จะแสดงบริการทั้งหมดให้คุณและควรพร้อมใช้งานเสมอ (หากคุณใช้ SQL Server เวอร์ชันก่อนหน้านี้)

หากคุณกำลังมองหากระบวนการค้นพบที่กว้างขึ้นคุณอาจพิจารณาเครื่องมือของบุคคลที่สามเช่น SQLRecon และ SQLPing ซึ่งจะสแกนเครือข่ายของคุณและสร้างรายงานของอินสแตนซ์บริการ SQL ทั้งหมดที่พบบนเซิร์ฟเวอร์ใด ๆ ที่พวกเขาสามารถเข้าถึงได้ เป็นเวลานานแล้วที่ข้าใช้เครื่องมือเช่นนี้ แต่ฉันรู้สึกประหลาดใจในสิ่งที่พวกเขาพบ (กล่าวคือมีกรณีที่ไม่ทราบจำนวนหนึ่ง) YMMV คุณอาจ Google สำหรับรายละเอียด แต่ฉันเชื่อว่าหน้านี้มีการดาวน์โหลดที่เกี่ยวข้อง: http://www.sqlsecurity.com/Tools/FreeTools/tabid/65/Default.aspx


1
ตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL เป็นสิ่งที่ฉันต้องการ ง่ายและรวดเร็ว
Chris

8

SQL Server อนุญาตให้แอปพลิเคชันค้นหาอินสแตนซ์ของ SQL Server ภายในเครือข่ายปัจจุบัน คลาส SqlDataSourceEnumerator จะเปิดเผยข้อมูลนี้แก่ผู้พัฒนาแอปพลิเคชันโดยให้ DataTable มีข้อมูลเกี่ยวกับเซิร์ฟเวอร์ที่มองเห็นได้ทั้งหมด ตารางที่ส่งคืนนี้ประกอบด้วยรายการของอินสแตนซ์เซิร์ฟเวอร์ที่มีอยู่บนเครือข่ายที่ตรงกับรายการที่ให้ไว้เมื่อผู้ใช้พยายามสร้างการเชื่อมต่อใหม่และขยายรายการแบบหล่นลงที่มีเซิร์ฟเวอร์ทั้งหมดที่มีอยู่ในกล่องโต้ตอบคุณสมบัติการเชื่อมต่อ ผลลัพธ์ที่แสดงไม่สมบูรณ์เสมอไป ในการดึงข้อมูลตารางที่มีข้อมูลเกี่ยวกับอินสแตนซ์ของ SQL Server ที่มีอยู่คุณต้องดึงข้อมูลตัวระบุก่อนโดยใช้คุณสมบัติ Instance / Static Instance:

using System.Data.Sql;

class Program
{
  static void Main()
  {
    // Retrieve the enumerator instance and then the data.
    SqlDataSourceEnumerator instance =
      SqlDataSourceEnumerator.Instance;
    System.Data.DataTable table = instance.GetDataSources();

    // Display the contents of the table.
    DisplayData(table);

    Console.WriteLine("Press any key to continue.");
    Console.ReadKey();
  }

  private static void DisplayData(System.Data.DataTable table)
  {
    foreach (System.Data.DataRow row in table.Rows)
    {
      foreach (System.Data.DataColumn col in table.Columns)
      {
        Console.WriteLine("{0} = {1}", col.ColumnName, row[col]);
      }
      Console.WriteLine("============================");
    }
  }
}

จาก msdn http://msdn.microsoft.com/en-us/library/a6t1z9x2(v=vs.80).aspx


ฉันจำเป็นต้องระบุซับเน็ตบนโดเมนนี้หรือไม่, มันจะกลับมาเป็นโมฆะสำหรับฉัน, คุณช่วยอัพเดทได้ไหม
Transformer

1
สำหรับผู้ที่ต้องการใช้ .NET หลักSqlDataSourceEnumeratorยังไม่ได้ใช้ แต่อยู่ในรายชื่อที่จะเพิ่มตามปัญหา GitHub
Daniel Hill

5

บริการเบราว์เซอร์เซิร์ฟเวอร์ SQL http://msdn.microsoft.com/en-us/library/ms181087.aspx


1
อุ้ย ... ขาด sqlbrowser.exe จากตำแหน่งปกติ! ฉันต้องมีรุ่น Microsoft (เช่นรุ่นที่ใช้งานไม่ได้) :-) ล้อเล่น - เราทุกคนรัก Microsoft เกือบเท่าแม่บุญธรรมของฉัน
แซม

5

หากคุณสนใจที่จะกำหนดสิ่งนี้ในสคริปต์คุณสามารถลองทำสิ่งต่อไปนี้:

sc \\server_name query | grep MSSQL

หมายเหตุ: grep เป็นส่วนหนึ่งของเครื่องมือ gnuwin32


3
คุณสามารถใช้findstrแทนgrepสิ่งนี้ได้
Pablo Montilla

นอกจากนี้คุณยังสามารถใช้ FIND ซึ่งนำไปสู่การสอบถาม sc \\ server_name | ค้นหา "MSSQL"
Julio Nobre

5

จากบรรทัดคำสั่งของ Windows ให้พิมพ์:

SC \\server_name query | find /I "SQL Server ("

โดยที่ "server_name" เป็นชื่อของรีโมตเซิร์ฟเวอร์ที่คุณต้องการแสดงอินสแตนซ์ SQL

ต้องมีการอนุญาตที่เพียงพอแน่นอน


ไม่ทำงานบนเครื่อง dev ของฉันซึ่งมี 2008 R2 และหลายอินสแตนซ์ Express และ LocalDB ทำงานอยู่
Christoph

4

แบบสอบถามนี้ควรให้คุณได้ชื่อเซิร์ฟเวอร์และชื่ออินสแตนซ์:

SELECT @@SERVERNAME, @@SERVICENAME

3
สิ่งนี้จะบอกชื่อของอินสแตนซ์ปัจจุบันที่เกี่ยวข้องกับการสืบค้นที่ดำเนินการอยู่เท่านั้น OP ขอรายการของอินสแตนซ์ที่ติดตั้งทั้งหมด
Jay Walker

1
นี่ไม่ได้ให้ข้อมูลใด ๆ เกี่ยวกับเวอร์ชันของเซิร์ฟเวอร์ SQL ที่ติดตั้ง
Ahmad

2

ผมมีปัญหาเหมือนกัน. คำสั่ง "osql -L" แสดงเฉพาะรายการเซิร์ฟเวอร์ แต่ไม่มีชื่ออินสแตนซ์ (แสดงเฉพาะอินสแตนซ์ของ SQL Sever ในเครื่องของฉันเท่านั้น) ด้วย Wireshark, sqlbrowser.exe (ซึ่งสามารถพบได้ในโฟลเดอร์แชร์ของการติดตั้ง SQL ของคุณ) ฉันพบวิธีแก้ไขปัญหาของฉัน

อินสแตนซ์ในระบบได้รับการแก้ไขโดยรายการรีจิสตรี อินสแตนซ์ระยะไกลได้รับการแก้ไขโดยการออกอากาศ UDP (พอร์ต 1434) และ SMB ใช้ "sqlbrowser.exe -c" เพื่อแสดงรายการคำขอ

การกำหนดค่าของฉันใช้อแด็ปเตอร์เครือข่ายเสมือนจริง 1 ตัวและ 3 ตัว หากฉันใช้คำสั่ง "osql -L" sqlbrowser จะแสดงคำขอจากหนึ่งในอะแดปเตอร์เสมือน (ซึ่งอยู่ในเซ็กเมนต์เครือข่ายอื่น) แทนที่จะเป็นฟิสิคัลที่หนึ่ง osql เลือก adpater ตามตัวชี้วัด คุณสามารถดูตัวชี้วัดที่มีคำสั่ง "พิมพ์เส้นทาง" สำหรับการกำหนดค่าตารางเส้นทางของฉันแสดงเมทริกที่ต่ำกว่าสำหรับอะแด็ปเตอร์เสมือนสำหรับฟิสิคัลแล้ว ดังนั้นฉันจึงเปลี่ยนการวัดอินเทอร์เฟซในคุณสมบัติเครือข่ายโดยยกเลิกการเลือกการวัดอัตโนมัติในการตั้งค่าเครือข่ายขั้นสูง ตอนนี้ osql ใช้ฟิสิคัลอะแด็ปเตอร์


2

อีกทางเลือกหนึ่งคือการเรียกใช้รายงานการค้นพบ SQLSERVER ไปที่สื่อการติดตั้งของ sqlserver และดับเบิลคลิก setup.exe

ป้อนคำอธิบายรูปภาพที่นี่

และในหน้าจอถัดไปให้ไปที่เครื่องมือและคลิกรายงานการค้นพบที่แสดงด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

นี้จะแสดงให้คุณเห็นทุกกรณีที่ปรากฏพร้อมกับคุณสมบัติทั้งหมด .. ด้านล่างเป็นภาพรวมบนพีซีของฉัน ป้อนคำอธิบายรูปภาพที่นี่


1

ฉันเพิ่งติดตั้ง SQL Server 2008 แต่ฉันไม่สามารถเชื่อมต่อกับอินสแตนซ์ฐานข้อมูลใด ๆ คำสั่ง @G Mastros ที่ลงรายการไว้ไม่มีอินสแตนซ์ที่ใช้งานอยู่

ดังนั้นฉันค้นหาบริการและพบว่าตัวแทนเซิร์ฟเวอร์ SQL ถูกปิดใช้งาน ฉันแก้ไขมันโดยการตั้งค่าเป็นอัตโนมัติแล้วเริ่ม


1

ฉันมีปัญหาเดียวกันนี้เมื่อฉันประเมินเซิร์ฟเวอร์มากกว่า 100+ ตัวฉันมีสคริปต์ที่เขียนใน C # เพื่อเรียกดูชื่อบริการประกอบด้วย SQL เมื่ออินสแตนซ์ที่ติดตั้งบนเซิร์ฟเวอร์ SQL Server เพิ่มบริการสำหรับแต่ละอินสแตนซ์ที่มีชื่อบริการ มันอาจแตกต่างกันไปสำหรับรุ่นที่แตกต่างกันเช่น 2000 ถึง 2008 แต่แน่นอนว่ามีบริการที่มีชื่ออินสแตนซ์

ฉันใช้ชื่อบริการและรับชื่ออินสแตนซ์จากชื่อบริการ นี่คือตัวอย่างโค้ดที่ใช้กับผลลัพธ์การสืบค้น WMI:

if (ServiceData.DisplayName == "MSSQLSERVER" || ServiceData.DisplayName == "SQL Server (MSSQLSERVER)")
            {
                InstanceData.Name = "DEFAULT";
                InstanceData.ConnectionName = CurrentMachine.Name;
                CurrentMachine.ListOfInstances.Add(InstanceData);
            }
            else
                if (ServiceData.DisplayName.Contains("SQL Server (") == true)
                {
                    InstanceData.Name = ServiceData.DisplayName.Substring(
                                            ServiceData.DisplayName.IndexOf("(") + 1,
                                            ServiceData.DisplayName.IndexOf(")") - ServiceData.DisplayName.IndexOf("(") - 1
                                        );
                    InstanceData.ConnectionName = CurrentMachine.Name + "\\" + InstanceData.Name;
                    CurrentMachine.ListOfInstances.Add(InstanceData);
                }
                else
                    if (ServiceData.DisplayName.Contains("MSSQL$") == true)
                    {
                        InstanceData.Name = ServiceData.DisplayName.Substring(
                                                ServiceData.DisplayName.IndexOf("$") + 1,
                                                ServiceData.DisplayName.Length - ServiceData.DisplayName.IndexOf("$") - 1
                                            );

                        InstanceData.ConnectionName = CurrentMachine.Name + "\\" + InstanceData.Name;
                        CurrentMachine.ListOfInstances.Add(InstanceData);
                    }

0

นี่เป็นวิธีง่าย ๆ : ไปที่เริ่มแล้วโปรแกรมจากนั้น Microsoft SQL Server 2005 แล้วเครื่องมือการกำหนดค่าแล้วตัวจัดการการกำหนดค่าเซิร์ฟเวอร์ SQL จากนั้นตั้งค่าเครือข่าย SQL Server 2005 แล้วที่นี่คุณสามารถค้นหาอินสแตนซ์ทั้งหมดที่ติดตั้งลงบนเครื่องของคุณ


0

ฉันรู้ว่ามันเป็นโพสต์เก่า แต่ฉันพบทางออกที่ดีกับ PoweShell ซึ่งคุณสามารถค้นหาอินสแตนซ์ SQL ที่ติดตั้งบนเครื่องโลคัลหรือเครื่องระยะไกลรวมถึงรุ่นและยังสามารถขยายคุณสมบัติอื่น ๆ ได้

$MachineName = ‘.’ # Default local computer Replace . with server name for a remote computer

$reg = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey(‘LocalMachine’, $MachineName)
$regKey= $reg.OpenSubKey("SOFTWARE\\Microsoft\\Microsoft SQL Server\\Instance Names\\SQL" )
$values = $regkey.GetValueNames()
$values | ForEach-Object {$value = $_ ; $inst = $regKey.GetValue($value); 
              $path = "SOFTWARE\\Microsoft\\Microsoft SQL Server\\"+$inst+"\\MSSQLServer\\"+"CurrentVersion";
              #write-host $path; 
              $version = $reg.OpenSubKey($path).GetValue("CurrentVersion");
                          write-host "Instance" $value;
              write-host  "Version" $version}

สวัสดีนี่เป็นวิธีที่ดีฉันสามารถห่อมันไว้ในคลาส C # หรือจะเรียกมันว่าจาก code ได้อย่างไร
transformer

สวัสดี นี่เป็นความพยายามครั้งแรกของฉันที่ powershell ดังนั้นความช่วยเหลือของคุณจะได้รับการชื่นชม ฉันได้รับข้อผิดพลาดต่อไปนี้ถ้าฉันพยายามเรียกใช้สคริปต์นี้ นี่จะหาเซิร์ฟเวอร์ sql ระยะไกลทั้งหมดหรือไม่ ฉันพยายามรวบรวมรายชื่อเซิร์ฟเวอร์ SQL และฐานข้อมูลของพวกเขา คุณไม่สามารถเรียกเมธอดบนนิพจน์ที่มีค่า Null + $ values ​​= $ regkey.GetValueNames ()
Darryl Wilson

0

คำสั่งOSQL -LและSQLCMD -Lจะแสดงอินสแตนซ์ทั้งหมดให้คุณในเครือข่ายบนเครือข่าย

หากคุณต้องการมีรายชื่อของอินสแตนซ์ทั้งหมดบนเซิร์ฟเวอร์และไม่รู้สึกอยากทำสคริปต์หรือเขียนโปรแกรมให้ทำสิ่งนี้:

  1. เริ่มตัวจัดการงานของ Windows
  2. ทำเครื่องหมายที่ช่อง "แสดงกระบวนการจากผู้ใช้ทั้งหมด" หรือเทียบเท่า
  3. จัดเรียงกระบวนการตาม "ชื่อรูปภาพ"
  4. ค้นหาsqlsrvr.exeภาพทั้งหมด

กรณีที่ควรจะอยู่ในส่วน "ชื่อผู้ใช้" MSSQL$INSTANCE_NAMEคอลัมน์เป็น

และฉันก็คิดว่าเซิร์ฟเวอร์ที่ไม่ดีใช้งาน 63 อินสแตนซ์เพื่อให้รู้ว่ากำลังรันอยู่สามครั้ง


0

จะได้รับอินสแตนซ์ของแบบสอบถาม SQL เซิร์ฟเวอร์ reg "ชื่อเซิร์ฟเวอร์ \ Instance SQL \ HKLM \ Software \ Microsoft \ Microsoft HKLM \ Software \ Microsoft \ Microsoft"

หรือใช้ SQLCMD -L


-1

หากภายใน SSMS ของคุณคุณอาจพบว่าใช้งานง่ายขึ้น:

SELECT @@Version

3
คำถามตัวเองระบุว่าพวกเขาไม่ต้องการ / ไม่สามารถใช้แบบสอบถาม SQL เพื่อตรวจสอบรุ่น
Trotski94
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.