none
SQL Server ML-Service Python StdOut 출력 관련 질문 RRS feed

  • 질문

  • exec sp_execute_external_script @language=N'Python',
    @Script=N''

    를 실행 하였을 때 

    STDOUT 메시지:

    Express Edition Will continue to be enforced 라고 뜨는데

    해당 문구가 안 뜨게 하거나

    STDOUT 자체를 안 뜨게 할 수 있을까요??

    감사합니다.

    2022년 12월 13일 화요일 오전 4:56

모든 응답

  • 안녕하십니까,@ Min_root 님
    MSDN 포럼에 질문 주셔서 감사합니다.

    sys.stdout를 no-op 쓰기 메서드가 있는 개체로 바꿀 수 있습니다.
    예를 들어:

    import contextlib
    import sys
    
    class DummyFile(object):
        def write(self, x): pass
    
    @contextlib.contextmanager
    def nostdout():
        save_stdout = sys.stdout
        sys.stdout = DummyFile()
        yield
        sys.stdout = save_stdout

    관련 Case 올려드립니다, 문제 해결에 도움이 되였으면 합니다.
    또한 Contextlib 패키지에서 억제 기능을 확인할 수 있습니다.

    답변이 도움이 되였으면 합니다, 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해 주시기 바랍니다.
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    • 답변으로 표시됨 Min_root 2022년 12월 14일 수요일 오전 12:21
    • 답변으로 표시 취소됨 Min_root 2022년 12월 14일 수요일 오전 12:21
    2022년 12월 13일 화요일 오전 9:31
    중재자
  • 현재 이렇게 발생이 되고 있습니다.

    여기서 외부 스크립트의 STDOUT 메시지:

     Express Edition will continue to be enforced 

    라는 구문 자체를 나오지 않기를 희망합니다.

    현재 DB -> MSSQL 2019 Standard Edition CU16
    2022년 12월 15일 목요일 오전 12:37
  • 안녕하십니까, @ Min_root 님
    피드백 주셔서 감사합니다.

    위에 공유드린 링크의 관련 사례에 대한 여러 방법을 시도해 보셨는지요?
    또한 Contextlib 패키지의 억제 기능을 시도해 보셨나요?

    문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해 주시기 바랍니다.
    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.

    2022년 12월 15일 목요일 오전 6:23
    중재자
  • 넵, 억제 기능 또한 시도를 해보았습니다.

    https://stackoverflow.com/questions/2828953/silence-the-stdout-of-a-function-in-python-without-trashing-sys-stdout-and-resto

    https://docs.python.org/3/library/contextlib.html#contextlib.suppress

    제가 원하는 형태는

    DB 에서 실행하는 외부스크립트 => ML-Service Python 항목에서

    EXECUTE sp_execute_External_script @language=N'Python'
    , @Script=N'
    
    '

    를 실행 하였을 경우 메시지 창에서 더이상의

    외부 스크립트의 STDOUT 메시지:
    Express Edition will continue to be enforced.

    라는 창이 뜨지 않기를 희망 합니다.

    2022년 12월 15일 목요일 오전 8:45
  • 안녕하십니까, @ Min_root 님
    답변 주셔서 감사합니다.

    해당 문제는 Python과 관련된 것으로 추가 도움이 필요한 경우 Python 포럼에 질문을 게시하는 것을 추천드립니다.
    Forums | Python.org

    이해해 주시기 바랍니다.
    위 웹 사이트는 Microsoft에서 호스팅 하지 않았기에 Link가 변경될 수 있습니다. Microsoft는 해당 정보의 정확성을 보증하지 않습니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.


    2022년 12월 16일 금요일 오전 6:10
    중재자
  • 답변 감사합니다. @Elin-msft

    그러면 MSSQL 에서는 해당 부분에 대해서는 없나요??

    저 문구 자체가 Express Edition 인데 Python 이랑 연관이 있는 건가요??

    MSSQL 의 버전 의 문제인걸로 알고 있었는데 그게 아닌 건가요??

    그 어떤 구문을 넣든 해당 문구가 제일 먼저 표시가 되고 있습니다.

    가령 예를 들면 sp_execute_external_script 를 할때 별도 조건을 건다든지 그런 것이 없나요??



    • 답변으로 표시됨 Min_root 2022년 12월 16일 금요일 오전 7:01
    • 답변으로 표시 취소됨 Min_root 2022년 12월 16일 금요일 오전 7:01
    • 편집됨 Min_root 2022년 12월 16일 금요일 오전 7:01
    2022년 12월 16일 금요일 오전 6:27
  • 안녕하십니까, @ Min_root 님

    아래 문서를 참조하시기 바랍니다.
    https://learn.microsoft.com/ko-kr/sql/sql-server/editions-and-components-of-sql-server-2019?view=sql-server-ver16
    이 문서의 시작 부분에는 여러 버전 간의 차이점이 설명되어 있습니다.
    그런 다음 프로그래밍 가능성 섹션으로 건너뛸 수 있습니다.
    이전 회신에 따르면 님께서는 표준 버전을 사용하고 있는 것으로 보입니다.
    기계 학습 서비스를 사용하여 Python 스크립트를 실행하고 있습니다. 
    또한, 사용 가능한 개발 버전도 있습니다.
    sp_execute_external_script에 대해서는 다음 문서를 참조하시기 바랍니다.
    https://learn.microsoft.com/ko-kr/sql/relational-databases/system-stored-procedures/sp-execute-external-script-transact-sql?view=sql-server-ver16
    sys.stdout은 파이썬에서 인터프리터의 표준 출력 스트림과 유사한 내장 파일 객체입니다, stdout은 화면 콘솔에 직접 출력을 표시하는 데 사용됩니다.
    출력은 모든 형태일 수 있으며, 인쇄문, 표현문 또는 직접 입력을 위한 프롬프트일 수도 있습니다.
    기본적으로 스트림은 텍스트 모드입니다.
    실제로 코드 내에서 인쇄 함수가 호출되는 곳은 어디든지 먼저 sys.stdout에 기록된 다음 마지막으로 화면에 기록됩니다.
    따라서 이 문제는 Python에 관련된 것으로 보입니다.

    감사합니다.

    MSDN Community Support Elin

     다른 커뮤니티 멤버에게 도움이 될 수 있게 문제를 해결 한 답변을 '답변으로 표시'를 클릭하시고 그렇지 않은 경우 '답변으로 표시 취소'를 클릭하시기 바랍니다. MSDN 서포트에 대한 의견이나 불만이 있을 경우 MSDNFSF@microsoft.com 으로 연락하시기 바랍니다.


    2022년 12월 20일 화요일 오전 6:52
    중재자