CREATEPROCEDURE [<procedureName>] /* parameters go here */ WITHNATIVE_COMPILATION,SCHEMABINDING,EXECUTEASOWNER ASBEGINATOMICWITH ( DELAYED_DURABILITY=ON, TRANSACTIONISOLATIONLEVEL=SNAPSHOT, LANGUAGE=N'English' ) /* procedure body goes here */ END
Msg 3202, Level 16, State 1, Line 161 Write on 's3://<endpoint>:<port>/<bucket>/<path>/<db_name>.bak' failed: 87(The parameter is incorrect.) Msg 3013, Level 16, State 1, Line 161 BACKUP DATABASE is terminating abnormally.
SQL Server has a maximum limit of 259 characters for a backup device name. The BACKUP TO URL consumes 36 characters for the required elements used to specify the URL - 'https://.blob.core.windows.net//.bak', leaving 223 characters for account, container, and blob names put together'
Msg 3201, Level 16, State 1, Line 28 Cannot open backup device '<path>'. Operating system error 5(Access is denied.). Msg 3013, Level 16, State 1, Line 28 BACKUP DATABASE is terminating abnormally.
·Azure Active Directory admin은하나의 Azure Active Directory 계정, 개인또는보안그룹계정을관리자로구성할수도있다. Azure AD 관리자를구성하는것은선택사항이지만, Azure AD 계정을사용하여 SQL Database에연결하려면 Azure AD 관리자를반드시구성해야한다.
Server Admin login과Azure Active Directory admin 관리자계정에는다음과같은특징이있다.
·데이터베이스, 로그인, master의사용자및서버수준 IP 방화벽규칙을만들고변경하고삭제할수있다.
·dbmanager 및 loginmanager 역할에멤버를추가하고제거할수있다.
·sys.sql_logins 시스템테이블을볼수있다.
서버수준방화벽이제대로구성되면 SQL 서버관리자및 Azure Active Directory 관리자가 SQL Server Management Studio 또는 SQL Server Data Tools와같은클라이언트도구를사용하여연결할수있다. 최신도구만모든특징및기능을제공한다. 다음다이어그램에서는두명의관리자계정에대한일반적인구성을보여준다. 서버수준방화벽에서열려있는포트를사용하면관리자가모든SQL Database에연결할수있다.
[Serve Level Administrative Roles]
Database creators
dbmanager 역할의멤버는새데이터베이스를만들수있다. 이역할을사용하려면 master 데이터베이스에사용자를만든다음해당사용자를 dbmanager 데이터베이스역할에추가해야한다. 데이터베이스를만들려면사용자가 master 데이터베이스의 SQL Server 로그인을기반으로한사용자이거나 Azure Active Directory 사용자를기반으로한포함된데이터베이스사용자여야한다. 아래스크립트를사용하여생성할수있다.
USEmaster
GO
CREATELOGIN Mary WITHPASSWORD='<strong_password>';
CREATEUSER [mike@contoso.com] FROMEXTERNALPROVIDER;-- To create a user with Azure Active Directory
CREATEUSER Ann WITHPASSWORD='<strong_password>';-- To create a SQL Database contained database user
CREATEUSER Mary FROMLOGIN Mary;-- To create a SQL Server user based on a SQL Server authentication login
ALTERROLE dbmanager ADD MEMBER Mary;
ALTERROLE dbmanager ADD MEMBER [mike@contoso.com];
Login managers
Loginmanager 멤버는 master 데이터베이스에새로그인을만들수있다. 원한다면동일한단계(로그인및사용자만들기, 사용자를 login manager 역할에추가)를완료하여사용자가 master에서새로그인을만들수있도록한다. 일반적으로 Microsoft는로그인기반사용자를사용하는대신데이터베이스수준에서인증하는포함된데이터베이스사용자를사용할것을권장하므로로그인이필수는아니다.
[Non-administrator users]
일반적으로비관리자계정은 master 데이터베이스에액세스할필요가없다. 비관리자계정은CREATE USER(Transact-SQL) 문을사용하여데이터베이스수준에서포함된데이터베이스사용자를생성한다. 사용자는 Azure Active Directory 인증포함된데이터베이스사용자 (Azure AD 인증용환경을구성한경우) 또는 SQL Server 인증포함된데이터베이스사용자또는 SQL Server 기반 SQL Server 인증사용자일수있다. 아래예시스크립트를사용하여계정을생성할수있다.
·서버수준방화벽을구성한후에만 Transact-SQL 문을사용하여 master 및사용자데이터베이스에대한데이터베이스수준 IP 방화벽규칙을만들고관리할수있다.
·서버수준 IP 방화벽규칙의범위를벗어나는데이터베이스수준 IP 방화벽규칙의 IP 주소범위를지정하면데이터베이스수준범위에서 IP 주소가있는클라이언트만데이터베이스에액세스할수있다.
·데이터베이스에대해최대 128개의데이터베이스수준 IP 방화벽규칙을가질수있다. 데이터베이스수준 IP 방화벽규칙을구성하는명령은sp_set_database_firewall_rule (Azure SQL Database)를사용한다.
[인터넷으로통한데이터베이스서버연결]
컴퓨터에서인터넷을통해데이터베이스서버에연결하려고하면먼저방화벽은연결에서요청하는데이터베이스에대한데이터베이스수준 IP 방화벽규칙에대해요청의원래 IP 주소를확인한다. 주소가데이터베이스수준 IP 방화벽규칙에지정된범위내에있는경우해당규칙을포함하는 SQL database에대해연결이가능하다. 주소가데이터베이스수준 IP 방화벽규칙의범위내에없는경우방화벽은서버수준 IP 방화벽규칙을확인한다. 주소가서버수준 IP 방화벽규칙의범위내에있는경우연결이허용된다. 서버수준 IP 방화벽규칙은 Azure SQL Server에있는모든SQL Database에적용된다. 주소가데이터베이스수준또는서버수준 IP 방화벽규칙의범위에포함되지않은경우연결요청이실패한다. 로컬컴퓨터에서 SQL Database에액세스하려면네트워크와로컬컴퓨터의방화벽이 TCP 포트 1433에서나가는통신을허용하는지확인한다.
·SQL 인증 : SQL 데이터베이스인증은사용자이름과암호를사용하여 Azure SQL Database에연결할때사용자가수행하는인증을지칭한다.
·Azure Active Directory 인증: Azure Active Directory 인증은 Azure AD(Azure Active Directory)의 ID를사용하여 Azure SQL Database 및 SQL Data Warehouse에연결하는메커니즘이다. 관리자는 Azure AD 인증을통해데이터베이스사용자의 ID 및권한과기타 Microsoft 서비스를중앙위치한곳에서관리할수있다. SQL Database를사용한 Azure AD 인증을사용하려면서버관리자 Active Directory 관리자를만들어야한다. Azure AD 인증에서는관리계정과페더레이션된계정이모두지원된다. 페더레이션된계정은 Azure AD와페더레이션된고객도메인용 Windows 사용자및그룹을지원한다. 사용가능한추가 Azure AD 인증옵션으로는다단계인증및조건부액세스를비롯한 SQL Server Management Studio용 Active Directory 유니버설인증연결이있다.
일반적으로서버리스데이터베이스는 max vCores 값에의해설정된한계내에서요청된컴퓨팅에대한중단없이리소스요구를충족시키기에충분한용량을가진머신에서실행된다. 시스템이몇분내에리소스요구를충족시킬수없는경우로드밸런싱이자동으로발생하는경우가있다. 예를들어, 리소스수요가 4 개의 vCore이지만 2개의 vCore 만사용할수있는경우 4 개의 vCore가제공되기전에로드밸런싱에최대몇분이걸릴수있다. 연결이끊어질때작업이끝날때짧은기간을제외하고데이터베이스는로드균형조정중에온라인상태로유지된다.
서버리스데이터베이스의메모리는프로비저닝된컴퓨팅데이터베이스보다더자주회수됩니다. 이동작은서버리스비용을제어하는데중요하며성능에영향을줄수있다. 프로비저닝된컴퓨팅데이터베이스와달리 CPU 또는캐시사용률이낮으면 SQL 캐시의메모리가서버리스데이터베이스에서회수된다.
Microsoft Azure SQL은다양한배포옵션을제공한다. 리프트앤시프트마이그레이션에서기존애플리케이션현대화, 최신클라우드서비스구축에이르기까지Microsoft SQL Server 엔진으로구동되는여러배포옵션을제공한다. Azure SQL은단일통합관리환경을제공하여다양한SQL Server 기반응용프로그램모음을대규모로관리하는복잡성을제거한다. 배포에옵션에관한자세한내용은아래링크를참고한다.
클라우드로의대부분마이그레이션에적합하다.Managed Instance는리프트앤시프트준비가된리소스의공유집합을사용하는시스템및사용자데이터베이스의컬렉션이다. 안정적인최신 SQL Server 기능을사용하고최소한의변경으로클라우드로마이그레이션되는새응용프로그램또는기존온-프레미스응용프로그램에가장적합하다. Managed Instance는데이터베이스의공유리소스및추가인스턴스범위기능을제공하는 Microsoft SQL Server 데이터베이스엔진의인스턴스와비슷하다. Managed Instance는데이터베이스변경없이또는최소한의변경으로온-프레미스에서데이터베이스를마이그레이션할수있도록지원한다. 이옵션은 Azure SQL Database의모든 PaaS 혜택을제공하지만이전에 SQL VM에서만사용할수있었던기능을추가한다. 여기에는기본가상네트워크(VNet) 및온-프레미스 SQL Server와의거의 100% 호환성이포함된다. Managed Instance는 SQL Server를 Azure로마이그레이션하기위한전체 SQL Server 액세스및기능호환성을제공한다.
[SQL virtual machines]
OS 수준액세스를필요로하는마이그레이션및응용프로그램에가장적합하다. SQL 가상머신은변경내용을최소화하거나변경하지않고클라우드로신속하게마이그레이션해야하는기존응용프로그램에대해리프트앤시프트가준비된다. SQL 가상머신은 Azure로의마이그레이션을위해 SQL Server 인스턴스및기본 OS에대한모든관리권한을제공한다. SQL 가상머신은IaaS (Infrastructure as a Service )에포함되며, Azure 클라우드의완전히관리되는 VM (가상머신) 내에서 SQL Server를실행할수있다. SQL 가상머신은 Microsoft에서소유하고호스트하며유지관리하는표준화된하드웨어에서도실행된다. SQL 가상컴퓨터를사용하는경우이미 SQL Server 이미지에포함된 SQL Server 라이선스를지불하거나기존라이선스를쉽게사용할수있다. 필요에따라 VM을중지하거나다시시작할수도있다. 클라우드에설치되고호스트되는 SQL Server는 Azure에서실행되는 Windows Server 또는 Linux 가상컴퓨터 (IaaS (infrastructure as a service) 라고도함)에서실행된다. SQL 가상머신은데이터베이스를변경하지않고온-프레미스 SQL Server 데이터베이스및응용프로그램을마이그레이션하는데적합한옵션이다. 모든최신버전의 SQL Server를 IaaS 가상머신에설치할수있다. SQL database와 SQL Managed Instance의가장중요한차이점은 SQL Server VM이데이터베이스엔진에대한모든권한을허용한다는것이다. 유지관리/패치를시작할시기를선택하고, 복구모델을단순또는대량로그로변경하거나, 필요에따라서비스를일시중지하거나시작하고, SQL Server 데이터베이스엔진을완벽하게사용자지정할수있다. 이추가컨트롤을사용하면가상머신을관리하는추가책임이있다.
·Single Database는완전히관리되는격리된데이터베이스를나타낸다. 안정적인단일데이터원본이필요한경우최신클라우드응용프로그램및마이크로서비스를사용하는경우이옵션을사용할수있다. 단일데이터베이스는 Microsoft SQL Server 데이터베이스엔진의포함된데이터베이스와비슷하다.
·Managed instance는Microsoft SQL Server 데이터베이스엔진의완전히관리되는인스턴스이다. 함께사용할수있는데이터베이스집합이포함되어있다. 온-프레미스SQL Server 데이터베이스를Azure 클라우드로쉽게마이그레이션할수있으며, 데이터베이스엔서제공하는SQL Server 데이터베이스기능을사용해야하는경우이옵션을선택한다.
Windows 에서SetFileValidData는단일메타데이터작업이다. VDL이설정되면쓰기(순차또는임의)는VDL == EOF로추가메타데이터업데이트가필요하지않다. Linux에서쓰기에는데이터쓰기및메타데이터쓰기가필요한익스텐트업데이트가필요하다. Linux 또는Windows에서가능한한빨리파일을쓰고확장할수있다. 그러나Linux에서처음쓰기를수행하면메타데이터가유지관리된다.
이번포스트에서는QPI 라이브러리를사용하여관리형인스턴의대기통계를쉽게분석하고있다.QPI 라이브러리를설치하려면아래링크로이동하여SQL Server 버전에대한SQL 스크립트를다운로드한다. QPI 라이브러리는Query Store 보기에의존하기때문에SQL Server 2016이상, Azure SQL 에서사용이가능하다.
Disclaimer: QPI library is open source library provided as-is and not maintained by Microsoft. There are not guarantees that the results are correct and that there are not bugs in calculations. This is a helper library that can help you to more easily analyze performance of your Managed Instance, but you can do the same job by looking directly at DMVs.