Powershell SQL Server에 갇혀


14

나는 약간의 파워 쉘 초보자입니다.

그래서 Restore-SqlDatabase커맨드 렛 을 사용하는 스크립트를 만들었습니다 . 그러나 실행 한 후에는 Powershell을 다른 상태로 둡니다.

PS D:\theFolder\> .\myRestoreDatabaseScript.ps1
... snip does the work ...
PS SQLSERVER:\>

Powershell을 "일반"인터페이스로 다시 되돌리려면 어떻게해야합니까?

또한 PS SQLSERVER접두사는 무엇입니까? 나는 이것을 위해 Google에 노력하고 비어 왔습니다.

답변:


21

MS 기사 SQL Server PowerShell에서

파일 시스템 경로와 유사한 간단한 탐색 메커니즘을 가능하게하는 SQL Server 공급자. 드라이브가 SQL Server 관리 개체 모델과 연결되고 노드가 개체 모델 클래스를 기반으로하는 파일 시스템 경로와 유사한 경로를 작성할 수 있습니다. 그런 다음 cddir 과 같은 익숙한 명령을 사용 하여 명령 프롬프트 창에서 폴더를 탐색하는 방법과 유사한 경로를 탐색 할 수 있습니다. ren 또는 del 과 같은 다른 명령을 사용 하여 경로의 노드에서 작업을 수행 할 수 있습니다.

이와 같은 공급자를로드하면 드라이브 (레터)를 처리하는 것과 같은 방식으로 SQLServer를 처리 할 수 ​​있습니다.

따라서 코드 어딘가에서 CDSQLServer 공급자 ( cd sqlserver:) 로 이동 했던 적이있을 것 입니다.

d:\thefolder구체적으로 돌아가 려면를 사용하십시오 cd d:\thefolder.

완료했을 때 시작한 곳으로 돌아가려면 현재 디렉토리 위치를 스크립트의 시작 부분에 변수로 저장 한 다음 스크립트 cd의 끝 부분 과 함께 사용하여 다시 변경해야합니다. 원래 디렉토리.

또는 @alroc의 의견에서 제안한 것처럼 push-locationand pop-locationcmdlet을 사용 하여 현재 위치를 저장하고 검색 할 수 있습니다.


3
현재 디렉토리를 변수에 저장할 필요는 없습니다. 사용 push-location가져 오기 전에 sqlps하고 pop-location당신에게 갈 수있는 좋은 방법입니다 좋은 수입 후.
alroc

@ alroc 아마 그런 것이 있다고 생각했지만 그 사실을 알지 못했습니다. :) 핸디.
Ƭᴇcʜιᴇ007

7

이것은 나를 위해 작동하는 것 같습니다 :

Invoke-Sqlcmd -InputFile "C:\MyFolder\TestSqlCmd.sql" | out-null

1

C:명령 프롬프트에서 간단히 입력 하면 일반적인 (예 : C : \>) 프롬프트로 돌아갑니다.

(즉, 그냥 SMO 프롬프트 촉발 할 수있는 정보를 위해 :> PS SQLSERVER를 ) 정상에서 C : \> 당신이없이 어셈블리 SMO를로드 할 때 프롬프트)이며, 아웃 널 (에서 null이 cmdlet에서 반환 된 출력을 억제 ).

다시 말해, SMO 어셈블리를로드 할 때 실수로 SMO 프롬프트로 들어 가지 않도록하려면 아래와 같이 Out-Null 을 파이프로 연결하십시오 .

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo") | Out-Null

Microsoft는 LoadWithPartialName () 메서드를 더 이상 사용하지 않으므로 대신 Add-Type을 사용하십시오.

Add-Type -Path "your_path_to_assembly\Smo.dll"

참고 : 어셈블리 / dll 경로를 얻으려면 다음과 같이 GetAssemblies () 메서드를 사용하십시오 .

[System.AppDomain]::CurrentDomain.GetAssemblies() | ? {$_.Location -match 'Smo.dll'}

HTH.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.