क्या मेरी स्थानीय मशीन पर पावरहेल का उपयोग कर SQL सर्वर पर मनमाने ढंग से क्वेरी निष्पादित करने का कोई तरीका है?आप PowerShell से SQL सर्वर क्वेरी कैसे चलाते हैं?
उत्तर
यहां एक उदाहरण है जिसे मैंने this blog पर पाया।
$cn2 = new-object system.data.SqlClient.SQLConnection("Data Source=machine1;Integrated Security=SSPI;Initial Catalog=master");
$cmd = new-object system.data.sqlclient.sqlcommand("dbcc freeproccache", $cn2);
$cn2.Open();
if ($cmd.ExecuteNonQuery() -ne -1)
{
echo "Failed";
}
$cn2.Close();
मुमकिन है आप एक अलग TSQL बयान स्थानापन्न सकता है जहां यह dbcc freeproccache
कहते हैं।
आप Invoke-Sqlcmd
cmdlet
Invoke-Sqlcmd -Query "SELECT GETDATE() AS TimeOfQuery;" -ServerInstance "MyComputer\MyInstance"
उपयोग कर सकते हैं आप अपने स्थानीय मशीन पर के बजाय एसक्यूएल सर्वर के संदर्भ में यह करने के लिए तो मैं निम्नलिखित का प्रयोग करेंगे चाहते हैं । यह वही है जो हम अपनी कंपनी में उपयोग करते हैं।
$ServerName = "_ServerName_"
$DatabaseName = "_DatabaseName_"
$Query = "SELECT * FROM Table WHERE Column = ''"
#Timeout parameters
$QueryTimeout = 120
$ConnectionTimeout = 30
#Action of connecting to the Database and executing the query and returning results if there were any.
$conn=New-Object System.Data.SqlClient.SQLConnection
$ConnectionString = "Server={0};Database={1};Integrated Security=True;Connect Timeout={2}" -f $ServerName,$DatabaseName,$ConnectionTimeout
$conn.ConnectionString=$ConnectionString
$conn.Open()
$cmd=New-Object system.Data.SqlClient.SqlCommand($Query,$conn)
$cmd.CommandTimeout=$QueryTimeout
$ds=New-Object system.Data.DataSet
$da=New-Object system.Data.SqlClient.SqlDataAdapter($cmd)
[void]$da.fill($ds)
$conn.Close()
$ds.Tables
बस $ सर्वर नाम, $ DatabaseName भर $ क्वेरी चर और तुम जाना अच्छा होना चाहिए।
मुझे यकीन नहीं है कि हमने इसे मूल रूप से कैसे पाया, लेकिन कुछ ऐसा ही है here।
इस समारोह powershell में ऑब्जेक्ट की श्रृंखला के रूप में एक प्रश्न के परिणाम वापस आ जाएगी, ताकि आप उन्हें फिल्टर और आसानी से उपयोग कर सकते स्तंभों में उपयोग कर सकते हैं:
function sql($sqlText, $database = "master", $server = ".")
{
$connection = new-object System.Data.SqlClient.SQLConnection("Data Source=$server;Integrated Security=SSPI;Initial Catalog=$database");
$cmd = new-object System.Data.SqlClient.SqlCommand($sqlText, $connection);
$connection.Open();
$reader = $cmd.ExecuteReader()
$results = @()
while ($reader.Read())
{
$row = @{}
for ($i = 0; $i -lt $reader.FieldCount; $i++)
{
$row[$reader.GetName($i)] = $reader.GetValue($i)
}
$results += new-object psobject -property $row
}
$connection.Close();
$results
}
'डेटाटेबल' भरने पर यह बेहतर क्यों है (देखें [एडम का उत्तर] (http://stackoverflow.com/a/17497834/1324345))? – alroc
शायद कोई बड़ा अंतर नहीं है, लेकिन SqlDataReaders को आम तौर पर प्राथमिकता दी जाती है क्योंकि वे कम संसाधनों का उपभोग करते हैं। यह यहां प्रासंगिक होने की संभावना नहीं है लेकिन वास्तविक डेटा को वापस प्राप्त करने के लिए अच्छा है, जिसे आप फोरैच में उपयोग कर सकते हैं और जहां डेटा के स्रोत के बारे में चिंता किए बिना खंड। – mcobrien
वहाँ एक अंतर्निहित नहीं है "PowerShell" जिस तरह से एक एसक्यूएल क्वेरी चलाने के लिए। यदि आपके पास SQL Server tools installed है, तो आपको Invoke-SqlCmd cmdlet मिल जाएगा।
क्योंकि PowerShell .NET पर बनाया गया है, तो आप अपने प्रश्नों को चलाने के लिए ADO.NET API का उपयोग कर सकते हैं।
function Invoke-SQL {
param(
[string] $dataSource = ".\SQLEXPRESS",
[string] $database = "MasterData",
[string] $sqlCommand = $(throw "Please specify a query.")
)
$connectionString = "Data Source=$dataSource; " +
"Integrated Security=SSPI; " +
"Initial Catalog=$database"
$connection = new-object system.data.SqlClient.SQLConnection($connectionString)
$command = new-object system.data.sqlclient.sqlcommand($sqlCommand,$connection)
$connection.Open()
$adapter = New-Object System.Data.sqlclient.sqlDataAdapter $command
$dataset = New-Object System.Data.DataSet
$adapter.Fill($dataSet) | Out-Null
$connection.Close()
$dataSet.Tables
}
मैं इस का उपयोग किया गया इतने लंबे समय मैं डॉन ':
दूसरों जो सिर्फ शेयर .net और PowerShell (बिना किसी अतिरिक्त एसक्यूएल उपकरण स्थापित) यहाँ के साथ ऐसा करने की जरूरत के लिए समारोह है कि मैं का उपयोग करें टी नहीं जानता कि कौन से हिस्सों को लिखा गया था लेकिन यह अन्य उदाहरणों से आसवित था लेकिन स्पष्ट होने के लिए सरलीकृत और केवल अतिरिक्त निर्भरताओं या सुविधाओं के बिना क्या आवश्यक है।
मैं का उपयोग करें और यह अक्सर पर्याप्त है कि मैं GitHub पर एक स्क्रिप्ट मॉड्यूल में इस कर दिया है, ताकि आप अब अपने मॉड्यूल निर्देशिका पर जाकर git clone https://github.com/ChrisMagnuson/InvokeSQL
निष्पादित और उस समय के बाद आह्वान-एसक्यूएल आप लोड हो जाएगा से कर सकते हैं जब तुम जाओ का हिस्सा इसका उपयोग करने के लिए (अपना उपयोग शक्तियों v3 या बाद में मानते हुए)।
कोई फर्क नहीं पड़ता कि यहां या शक्ति में कोई फर्क नहीं पड़ता? – Maslow
@ मास्लो मैं निश्चित रूप से नहीं कह सकता था, मुझे पता है कि यह ऑब्जेक्ट्स के निपटारे के बिना ठीक काम करता है लेकिन यदि आपके पास एक ही powerhell.exe प्रक्रिया है जो इसे बंद किए बिना सप्ताहों में कई बार कॉल करेगी तो यह अंततः एक मुद्दा हो सकती है लेकिन आपको इसका परीक्षण करना होगा। –
ध्यान दें कि यह आपको स्क्रिप्ट लिखने के लिए मजबूर करता है जो एसक्यूएल इंजेक्शन हमलों के लिए कमजोर हो सकता है, अगर वे उपयोगकर्ता इनपुट पर निर्भर स्रोत से क्वेरी के लिए डेटा पढ़ने पर निर्भर करते हैं। –
Invoke-Sqlcmd -Query "sp_who" -ServerInstance . -QueryTimeout 3
क्या आप यह कोड समझा सकते हैं? – RamenChef
यह powerhell कमांड द्वारा उपयोग किए गए एसक्यूएल में कनेक्शन की संख्या दिखाएगा –
- 1. कमांड लाइन से mysql के माध्यम से आप एक क्वेरी कैसे चलाते हैं?
- 2. आप PHP से .bat फ़ाइल कैसे चलाते हैं?
- 3. आप विंडोज़ में विम कैसे चलाते हैं?
- 4. आप उल्का परीक्षण कैसे चलाते हैं?
- 5. आप सिनात्रा में परीक्षण कैसे चलाते हैं?
- 6. आप ल्यूकेन ऑन .net कैसे चलाते हैं?
- 7. क्वेरी परिणाम (SQL सर्वर)
- 8. आप एसएसएच से php फ़ाइल कैसे चलाते हैं?
- 9. SQL सर्वर 2005 से सक्रिय निर्देशिका क्वेरी
- 10. SQL सर्वर पूर्ण-पाठ क्वेरी
- 11. आप PowerShell का उपयोग कैसे करते हैं?
- 12. SQL सर्वर 2005 कॉल/क्वेरी
- 13. एसक्यूएल-सर्वर, अगर SQL क्वेरी
- 14. आप PowerShell
- 15. आप SQL सर्वर सत्र में autocommit कैसे सेट करते हैं?
- 16. एसक्यूएल क्वेरी SQL सर्वर 2005
- 17. विशिष्ट समय सीमा क्वेरी SQL सर्वर में
- 18. SQL क्वेरी में क्लॉज से दो कैसे हो सकते हैं?
- 19. django परीक्षण चलाते समय एसक्यूएल क्वेरी कैसे देखें?
- 20. आप विंडोज़ पर node.js में बाहरी प्रोग्राम कैसे चलाते हैं?
- 21. आप हेरोोकू पर आरएसपीसी और ककड़ी कैसे चलाते हैं?
- 22. आप हेरोोकू पर उपयोगिता सेवाएं कैसे चलाते हैं?
- 23. * nix में लॉगिन पर आप एक स्क्रिप्ट कैसे चलाते हैं?
- 24. Sql सर्वर 2008 क्रॉस टैब क्वेरी
- 25. SQL सर्वर क्वेरी प्रत्येक उप-समूह
- 26. SQL सर्वर तालिका निर्माण दिनांक क्वेरी
- 27. जिन्हें आप नीचे देख SQL क्वेरी मदद
- 28. आप LINQ से SQL के साथ एक उप-क्वेरी कैसे प्रबंधित कर सकते हैं?
- 29. एकाधिक डेटाबेस (SQL सर्वर) पर क्वेरी
- 30. देशी आईओएस अनुप्रयोग से क्वेरी SQL सर्वर डेटाबेस
किसी ने (यदि आप अपने कार्य केंद्र का उपयोग कर रहे इतना उल्लेख करना चाहिए इस महान यदि आप SQL सर्वर के संदर्भ में कर रहे हैं हो सकता है, लेकिन नहीं ... – aikeru
आप इस कहीं भी एसक्यूएल सर्वर क्लाइंट उपकरण चला सकते हैं SSMS) स्थापित हैं। यह किसी भी वर्कस्टेशन से ठीक काम करता है, चाहे वह SQL सर्वर चला रहा हो या नहीं। – alroc
cmdlet उपलब्ध कराने के लिए निम्न आयात का उपयोग करें: 'आयात-मॉड्यूल "sqlps" -DisableNameChecking' –