लिनक्स पर एसक्यूएल सर्वर प्रारंभिक स्टार्टअप पर लटका हुआ है, कोई त्रुटि नहीं है, और कोई नया / अपडेटेड एररलोड फाइल नहीं है


11

मैं SQL Server 2017, रिलीज़ कैंडिडेट 2 (RC2) का लिनक्स (Ubuntu 16.04) पर उपयोग कर रहा हूँ।

जब सर्वर शुरू होता है, तो SQL सर्वर आमतौर पर शुरू होता है। लेकिन किसी कारण से, SQL सर्वर अब शुरू नहीं होगा। कम से कम मैं sqlcmd का उपयोग करके इसे कनेक्ट नहीं कर सकता । मुझे हर बार ODBC टाइमआउट ( "Sqlcmd: त्रुटि: Microsoft ODBC ड्राइवर 13 SQL सर्वर के लिए " मिलता है):

Login timeout expired.  
TCP Provider: Error code 0x2749.  
A network-related or instance-specific error has occurred while establishing a
connection to SQL Server. Server is not found or not accessible. Check if instance
name is correct and if SQL Server is configured to allow remote connections.
For more information see SQL Server Books Online..

हालाँकि, जब मैं दौड़ता हूँ:

ps aux | grep mssql

मुझे दो प्रविष्टियाँ mssqlप्राप्त होती हैं जो दिखाती हैं कि उपयोगकर्ता sqlservrप्रक्रिया चला रहा है।

इसके अलावा, errorlog में फ़ाइल / var / opt / mssql / log / एक टाइमस्टैम्प मिलान जब मैं वी एम शुरू कर दिया (या सेवा को पुन: प्रारंभ) नहीं है, और न ही वहाँ उस फ़ाइल में किसी भी नए प्रविष्टियां होती हैं।

और, / var / log / संदेशों में , जो दिखाता है वह है:

यह एक मूल्यांकन संस्करण है। मूल्यांकन अवधि में [१४१] दिन शेष हैं।

अगर मैं दौड़ता हूं systemctl status mssql-server, तो मुझे निम्नलिखित मिलते हैं:

● mssql-server.service - Microsoft SQL सर्वर डेटाबेस इंजन
लोड किया गया: लोड किया गया (/lib/systemd/system/mssql-server.service; सक्षम; विक्रेता पूर्व निर्धारित: सक्षम)
सक्रिय: विफल (परिणाम, निकास-कोड) सोम 2017 के बाद से; 09-04 20:01:56 BST; 36s पहले
डॉक्स: https://docs.microsoft.com/en-us/sql/linux
प्रक्रिया: 8009 ExecStart = / opt / mssql / bin / sqlservr (कोड = बाहर, स्थिति = 255)
मुख्य PID: 8009 (कोड =) बाहर, स्थिति = 255)

Started Microsoft SQL Server Database Engine.  
This is an evaluation version.  There are [141] days left in the evaluation period.  
Stopping Microsoft SQL Server Database Engine...  
mssql-server.service: Main process exited, code=exited, status=255/n/a  
Stopped Microsoft SQL Server Database Engine.  
mssql-server.service: Unit entered failed state.  
mssql-server.service: Failed with result 'exit-code'.  

जवाबों:


15

यह काम करते समय सावधान नहीं रहने के एक मामले के रूप में समाप्त हुआ root

मैं शोध कर रहा था कि क्या लिनक्स पर एसक्यूसीएलआर एप्लिकेशन के पास पहुंच जाएगा। विंडोज में जैसे फाइल करता है। उदासी से यह होता है: ऐसा नहीं है: लिनक्स पर SQL सर्वर 2017 मौजूद नहीं है, या कभी-कभी लॉक-अप करता है, तो एप्स फाइल को अनदेखा कर देता है। 't (SQLCLR) ) और कुछ परिस्थितियों में SQL सर्वर पूरी तरह से बंद हो जाएगा। जब ऐसा हुआ, तो इसे रोकने का एक ही तरीका था कि हम इस kill -9पर काम करें sqlservr। एक बार जब मैं फिर से सेवा शुरू कर रहा था, तब मैंने सीधे / ऑप्ट / mssql / bin / sqlservr को निष्पादित करके और जब तक मैं काम कर रहा था root(इसलिए प्रक्रिया स्वयं के स्वामित्व में थी root)।

कोई तत्काल त्रुटियों या विचित्र व्यवहार चल रहा से उत्पन्न थे sqlservrके रूप में rootहै, लेकिन जब वी एम को पुनः आरंभ और SQL सर्वर ठीक से शुरू करने का प्रयास किया (यानी के रूप में चल mssqlउपयोगकर्ता), यह है कि जब यह बहुत शुरुआत में अटक गई।

मैंने पाया कि sqlservrजैसा चल रहा rootथा उसका एक सीधा परिणाम यह था कि / var / opt / mssql / log / errorlog फ़ाइल (और कुछ अन्य जो SQL सर्वर शुरू होने पर बनाई गई हैं) के स्वामित्व वाले थे root(समझ में आता है)।

और, उन फ़ाइलों के स्वामित्व का एक सीधा परिणाम rootयह है कि जब प्रक्रिया ठीक से शुरू हो जाती है (जैसा कि mssql), तो mssqlउपयोगकर्ता को .1 में समाप्त होने के लिए फ़ाइल का नाम बदलने की अनुमति नहीं है (और जो कुछ भी किसी अन्य के साथ होने की आवश्यकता है। फ़ाइलें, जैसे कि डिफ़ॉल्ट ट्रेस, आदि)। हालाँकि, अनुमतियाँ त्रुटि मिलने के बजाय, यह हमेशा के लिए हैंग हो जाती है।

प्राथमिक फिक्स केवल निम्नलिखित को चलाने के लिए है root(मैंने इसे चलाने की कोशिश नहीं की है mssql)। निम्न कमांड के दोनों के लिए, sudoकेवल जरूरत है जब वर्तमान के रूप में कार्य नहीं rootके रूप में यह आदेश है कि यह इस प्रकार चलेंगे रूप में root (यदि आपके द्वारा निर्दिष्ट या कुछ अन्य उपयोगकर्ता -u username,) दर्ज करने का संकेत दिए जाने के बाद rootपासवर्ड।

sudo chown -R  mssql:mssql /var/opt/mssql

माध्यमिक फिक्स (यह सुनिश्चित करने के लिए कि यह फिर से नहीं होता है), SQL सर्वर को ठीक से शुरू करने के लिए है ;-):

sudo systemctl start mssql-server

1

परमिट प्राप्त करने के लिए और स्मार्ट त्रुटियों को प्राप्त करने के लिए आपको कम से कम निम्नलिखित की आवश्यकता है ...

# make sure needed directories exist
sudo mkdir /var/opt/mssql /var/opt/mssql/.system /var/opt/mssql/data /var/opt/mssql/log

# this should be owned by mssql
sudo chown -R  mssql:mssql /var/opt/mssql
sudo chmod 770 /var/opt/mssql

# this should be owned by root
sudo chown -R root:root /opt/mssql
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.