การเชื่อมต่อกับเซิร์ฟเวอร์ MS SQL ภายในจากไคลเอนต์ GUI


11

ฉันยังใหม่กับ SQL และเซิร์ฟเวอร์ฐานข้อมูล ฉันเพิ่งใช้ SQL Server Express และเข้าถึงฐานข้อมูลของฉันโดยใช้ SQL Server Management Studio บน Windows ตอนนี้ฉันกำลังพยายามตั้งค่าที่คล้ายกันบนเครื่อง Linux

ฉันต้องการสร้างอินสแตนซ์ SQL Server ในเครื่องของฉันแล้วใช้SQLectronเป็นไคลเอนต์ GUI สำหรับสอบถามฐานข้อมูลของฉัน ฉันใช้ Manjaro Linux และติดตั้งแพ็คเกจของฉันจาก AUR

จนถึงขณะนี้ผมได้ติดตั้งmssql-server, และmssql-tools sqlectron-guiฉันได้รันsudo /opt/mssql/bin/mssql-conf setupคำสั่งเพื่อ (ฉันเชื่อว่า) ตั้งค่าเซิร์ฟเวอร์ภายใน หลังจากทำเช่นนั้นการรันคำสั่งsystemctl status mssql-serverจะส่งคืนสิ่งนี้:

[kev @ XPS-Manjaro ~] สถานะ $ systemctl mssql-server
● mssql-server.service - โปรแกรมฐานข้อมูล Microsoft SQL Server
โหลดแล้ว: โหลดแล้ว (/usr/lib/systemd/system/mssql-server.service เปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: ปิดใช้งาน)
ใช้งานอยู่: เปิดใช้งาน (ทำงาน) ตั้งแต่วันพุธ 2017-08-23 13:43:49 IST; 2 ชม. 42 นาทีที่แล้ว
    เอกสาร: https://docs.microsoft.com/en-us/sql/linux
PID หลัก: 9130 (sqlservr)
    ภารกิจ: 165
CGroup: /system.slice/mssql-server.service
        ├─9130 / opt / mssql / bin / sqlservr
        149144 / opt / mssql / bin / sqlservr

23 ส.ค. 13:43:52 XPS-Manjaro sqlservr [9130]: [145B หยดข้อมูล]
23 ส.ค. 13:43:52 XPS-Manjaro sqlservr [9130]: [ข้อมูล 66B หยด]
23 ส.ค. 13:43:52 XPS-Manjaro sqlservr [9130]: [ข้อมูล 96B หยด]
23 ส.ค. 13:43:52 XPS-Manjaro sqlservr [9130]: [100B ข้อมูลหยด]
23 ส.ค. 13:43:52 XPS-Manjaro sqlservr [9130]: [ข้อมูลหยด 71B]
23 ส.ค. 13:43:52 XPS-Manjaro sqlservr [9130]: [ข้อมูลหยด 124B]
23 สิงหาคม 13:49:03 XPS-Manjaro sqlservr [9130]: [ข้อมูลหยด 156B]
23 สิงหาคม 13:49:03 XPS-Manjaro sqlservr [9130]: [194B ข้อมูลหยด]
23 สิงหาคม 13:52:31 XPS-Manjaro sqlservr [9130]: [ข้อมูลหยด 74B]
23 ส.ค. 13:52:31 น. XPS-Manjaro sqlservr [9130]: [ข้อมูลหยด 199B]

ตอนนี้ฉันกำลังพยายามสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ของฉันผ่าน SQLectron บนหน้าจอต่อไปนี้:

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

เนื่องจากฉันมีประสบการณ์น้อยมากกับเซิร์ฟเวอร์ SQL ฉันจึงสูญเสียตำแหน่งที่จะรับข้อมูลรับรองทั้งหมดเหล่านี้เพื่อเชื่อมต่อกับเซิร์ฟเวอร์ในพื้นที่ของฉัน สิ่งเดียวที่ฉันรู้คือรหัสผ่านที่ฉันตั้งไว้ในsudo /opt/mssql/bin/mssql-conf setupคำสั่ง

ฉันจะค้นหาชื่อเซิร์ฟเวอร์, ที่อยู่โฮสต์ (127.0.0.1 ได้อย่างไร), พอร์ต, โดเมน, เส้นทางซ็อกเก็ต Unix และชื่อผู้ใช้?


ฉันทำงานกับ SQL Server บน Windows เท่านั้น แต่หากมีคำศัพท์บางคำที่จะช่วย: ชื่อจะเป็นชื่อของเซิร์ฟเวอร์ (และอินสแตนซ์หากจำเป็น) จากสิ่งที่คุณพูดaddressตามที่ 127.0.0.1` ควรใช้งานได้ portควรได้รับการตั้งค่าเมื่อคุณติดตั้งเซิร์ฟเวอร์ (โดยปกติคือ 1433) userจะเป็นชื่อผู้ใช้ที่คุณต้องการเข้าสู่ระบบ (อาจเป็นบัญชีผู้ใช้ Linux หรือบัญชี SQL Server (เช่นsa)) และpasswordเป็นรหัสผ่านสำหรับบัญชีนั้นDatabaseและSchemaจะเป็นฐานข้อมูลเริ่มต้นและสคีมาที่คุณจะเชื่อมต่อด้วยลองmasterและ ว่างเปล่าหรือmasterและdbo.
RDFozz

คำตอบ:


7

หากคุณใช้งาน GUI บนเครื่องเดียวกันกับบริการ mssql-server คุณสามารถใช้ localhost สำหรับที่อยู่ (127.0.0.1) หากคุณใช้งาน GUI จากเวิร์กสเตชันอื่นคุณจะต้องมีที่อยู่ IPv4 ของเครื่องที่ใช้บริการ mssql-server คุณสามารถรับได้โดยการเรียกใช้ifconfigจากพรอมต์เทอร์มินัล Linux ตัวอย่างผลลัพธ์จากifconfig:

eth0: ค่าสถานะ = 4163 mtu 1500
        อีเธอร์ 00: 15: 5d: 89: 45: 01 txqueuelen 1,000 (Ethernet)
        RX แพ็คเก็ต 423 ไบต์ 137827 (134.5 KiB)
        ข้อผิดพลาดของ RX 0 ลดลง 0 เกิน 0 เฟรม 0
        แพ็กเก็ต TX 0 ไบต์ 0 (0.0 B)
        ข้อผิดพลาดของ TX 0 ลดลง 0 เกิน 0 ผู้ให้บริการ 0 ชน 0

eth1: ค่าสถานะ = 4163 mtu 1500
        inet 192.168.200.11 netmask 255.255.255.0 ออกอากาศ 192.168.200.255
        inet6 fe80 :: 2f70: 9d15: 8e7d: 16cb คำนำหน้า 64 ขอบเขตid 0x20
        อีเธอร์ 00: 15: 5d: 89: 45: 04 txqueuelen 1,000 (Ethernet)
        แพ็คเก็ต RX 20138 ไบต์ 2006000 (1.9 MiB)
        ข้อผิดพลาดของ RX 0 ลดลง 0 เกิน 0 เฟรม 0
        แพ็คเก็ต TX 19756 ไบต์ 30125657 (28.7 MiB)
        ข้อผิดพลาดของ TX 0 ลดลง 0 เกิน 0 ผู้ให้บริการ 0 ชน 0

แท้จริง: ธง = 73 mtu 65536
        inet 127.0.0.1 netmask 255.0.0.0
        inet6 :: คำนำหน้า 1 128 ขอบเขตid 0x10
        loop txqueuelen 1 (Local Loopback)
        RX แพ็คเก็ต 3239 ไบต์ 361340 (352.8 KiB)
        ข้อผิดพลาดของ RX 0 ลดลง 0 เกิน 0 เฟรม 0
        แพ็กเก็ต TX 3239 ไบต์ 361340 (352.8 KiB)
        ข้อผิดพลาดของ TX 0 ลดลง 0 เกิน 0 ผู้ให้บริการ 0 ชน 0

ในผลลัพธ์ข้างต้นบิตที่สำคัญคือที่อยู่ "inet" ซึ่งในกรณีของฉันคือ 192.168.200.11

พอร์ตเริ่มต้นสำหรับ SQL Server คือ 1433 - ยกเว้นว่าคุณเลือกพอร์ตอื่นใน mssql-conf ใช้หมายเลขพอร์ตนั้น ตรวจสอบให้แน่ใจว่าไฟร์วอลล์บนกล่อง Linux อนุญาตการเชื่อมต่อภายนอกผ่านทาง 1433 หากคุณต้องการเชื่อมต่อกับ SQL Server ผ่านเครือข่าย

ใช้saเป็นล็อกอินและรหัสผ่านที่คุณระบุระหว่างการติดตั้ง SQL Server ผ่านsudo /opt/mssql/bin/mssql-conf setupคำสั่ง

ฉันจะปล่อยให้โดเมนและเส้นทางซ็อกเก็ตยูนิกซ์ว่างเปล่า

เมื่อคุณเชื่อมต่อกับอินสแตนซ์แล้วคุณอาจต้องการกำหนดค่าบัญชีที่ไม่ใช่ sa ทำอย่างนั้นกับคำสั่งCREATE LOGIN

เพียงแค่ FYI คุณสามารถใช้ SQL Server Management Studio เพื่อเชื่อมต่อกับ SQL Server บน Linux ได้หากคุณต้องการ


สำหรับ FYI ของคุณฉันจะใช้ SSMS GUI บน Linux ได้อย่างไร ฉันได้ติดตั้งทั้งสองmssql-serverและmssql-tools- ซึ่งไม่มีดูเหมือนว่าจะมีแอพพลิเคชั่น GUI หรืออะไรก็ตามที่ติดตั้งเกี่ยวกับ SSMS เนื่องจากฉันคุ้นเคยกับ SSMS มากที่สุดฉันต้องการใช้มันต่อไป แต่ไม่คิดว่ามันมีอยู่ใน Linux
KOB

โอ้ไม่ฉันหมายความว่าคุณสามารถเรียกใช้ SSMS บนเวิร์กสเตชัน Windowsและเชื่อมต่อกับ SQL Server บน Linux
Max Vernon

โอเคฉันคิดอย่างนั้น ไม่ฉันกำลังทดลองและต้องการให้ทุกอย่างทำงานจากเครื่อง Linux ของฉัน
KOB

หนึ่งในการติดตามครั้งสุดท้าย: หากตอนนี้ฉันต้องการเข้าถึงฐานข้อมูลของฉันจากสคริปต์ Python ฉันจะต้องกำหนดค่าบัญชีที่ไม่ใช่ sa ของฉันตามที่คุณพูดถึงแล้วติดตั้งไดรเวอร์บางส่วนหรือไม่ ฉันใช้ ODBC Driver เมื่อทำงานบน Windows ในสคริปต์ Pyton ของฉันใน Windows ผมมีชื่อเซิร์ฟเวอร์ของฉันสำหรับโปรแกรมการเชื่อมต่อจาก SSMS CPX-9GL9XXXXXXX\SQLEXPRESSซึ่งเป็นในรูปแบบของ ฉันจะค้นหาชื่อเซิร์ฟเวอร์ที่เทียบเท่าได้โดยไม่ต้องเข้าถึง SSMS ได้อย่างไร
KOB

เบราว์เซอร์เซิร์ฟเวอร์ SQLใช้เพื่อค้นหาอินสแตนซ์ของเซิร์ฟเวอร์ SQL โดยไม่ทราบหมายเลขพอร์ตล่วงหน้า ... ดังนั้นสำหรับCPX-9GL9XXXXXXX\SQLEXPRESS-> SQLEXPRESSคือชื่ออินสแตนซ์ซึ่งจะถูกแปลโดยบริการเบราว์เซอร์เซิร์ฟเวอร์ SQL เป็นหมายเลขพอร์ต น่าเสียดายที่เบราว์เซอร์ SQL Server ยังไม่รองรับบน Linuxดังนั้นคุณจำเป็นต้องรู้หมายเลขพอร์ตซึ่งก็คือ 1433 โดยค่าเริ่มต้น
Max Vernon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.