mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-13 17:22:15 -05:00
279 lines
11 KiB
Plaintext
279 lines
11 KiB
Plaintext
{
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"name": "python3",
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python"
|
|
},
|
|
"language_info": {
|
|
"name": "python",
|
|
"version": "3.8.10",
|
|
"mimetype": "text/x-python",
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"pygments_lexer": "ipython3",
|
|
"nbconvert_exporter": "python",
|
|
"file_extension": ".py"
|
|
}
|
|
},
|
|
"nbformat_minor": 2,
|
|
"nbformat": 4,
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"\n",
|
|
"## Run SQL Server 2017 container images with Docker\n",
|
|
"This notebook will use Docker to pull and run the SQL Server 2017 container image and connect to it in Azure Data Studio\n",
|
|
"\n",
|
|
"### Dependencies\n",
|
|
"- Docker Engine. For more information, see [Install Docker](https://docs.docker.com/engine/installation/).\n",
|
|
"\n",
|
|
"<span style=\"color:red\"><font size=\"3\">Please press the \"Run all\" button to run the notebook</font></span>"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "1d10b817-e9f4-4532-b69f-4d47504d590b"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Check dependencies"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "630e76af-01a6-4905-90a7-2d643126cdb4"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"import sys,os,getpass,json,html,time\n",
|
|
"from string import Template\n",
|
|
"\n",
|
|
"def run_command(displayCommand = \"\"):\n",
|
|
" print(\"Executing: \" + displayCommand if displayCommand != \"\" else cmd)\n",
|
|
" !{cmd}\n",
|
|
" if _exit_code != 0:\n",
|
|
" sys.exit(f'Command execution failed with exit code: {str(_exit_code)}.\\n')\n",
|
|
" print(f'Command successfully executed')\n",
|
|
"\n",
|
|
"cmd = 'docker version'\n",
|
|
"run_command()"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "64f3e119-408a-4b61-bce4-68114e2a727c",
|
|
"tags": [
|
|
"hide_input"
|
|
],
|
|
"language": "python"
|
|
},
|
|
"outputs": [],
|
|
"execution_count": null
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### List existing containers\n",
|
|
"You can view the ports that have been used by existing containers"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "b671aaac-226f-4bbd-9839-552ec676c027"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"cmd = f'docker ps -a'\n",
|
|
"run_command()"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "dd665751-efbc-4089-af1b-0fa456a4fb58",
|
|
"tags": [
|
|
"hide_input"
|
|
],
|
|
"language": "python"
|
|
},
|
|
"outputs": [],
|
|
"execution_count": null
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Required information"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "9927c86e-e929-497e-bced-ced60e6a5a7c"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"env_var_flag = \"AZDATA_NB_VAR_DOCKER_PASSWORD\" in os.environ\n",
|
|
"password_name = 'SQL Server sa account password'\n",
|
|
"if env_var_flag:\n",
|
|
" sql_password = os.environ[\"AZDATA_NB_VAR_DOCKER_PASSWORD\"]\n",
|
|
" sql_port = os.environ[\"AZDATA_NB_VAR_DOCKER_PORT\"]\n",
|
|
"else:\n",
|
|
" sql_password = getpass.getpass(prompt = password_name)\n",
|
|
" password_confirm = getpass.getpass(prompt = f'Confirm {password_name}')\n",
|
|
" if sql_password != password_confirm:\n",
|
|
" sys.exit(f'{password_name} does not match the confirmation password.')\n",
|
|
" sql_port = input('SQL Server port, default value is 1433')\n",
|
|
" if len(sql_port) == 0:\n",
|
|
" sql_port = '1433'\n",
|
|
"print(f'{password_name}: ******')\n",
|
|
"print(f'Port: {sql_port}')"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "a2e06bb2-23f3-4fc7-81bc-d38e250b24c0",
|
|
"tags": [
|
|
"hide_input"
|
|
],
|
|
"language": "python"
|
|
},
|
|
"outputs": [],
|
|
"execution_count": null
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Pull the container image"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "ca95b65d-e6f9-43a3-b06e-aa9cfc917725"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"cmd = f'docker pull mcr.microsoft.com/mssql/server:2017-latest'\n",
|
|
"run_command()"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "d75ae87c-2e59-4cf5-b61e-43f4bf8ac680",
|
|
"tags": [
|
|
"hide_input"
|
|
],
|
|
"language": "python"
|
|
},
|
|
"outputs": [],
|
|
"execution_count": null
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Start a new container"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "5bbde6b1-4933-417d-90cc-0c853e002552"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"if env_var_flag:\n",
|
|
" container_name = os.environ[\"AZDATA_NB_VAR_DOCKER_CONTAINER_NAME\"]\n",
|
|
"else:\n",
|
|
" container_name = 'sql2017-' + time.strftime(\"%Y%m%d%H%M%S\", time.localtime())\n",
|
|
"print('New container name: ' + container_name)\n",
|
|
"\n",
|
|
"template = Template(f'docker run -e ACCEPT_EULA=Y -e \"SA_PASSWORD=$password\" -p {sql_port}:1433 --name {container_name} -d mcr.microsoft.com/mssql/server:2017-latest')\n",
|
|
"cmd = template.substitute(password=sql_password)\n",
|
|
"run_command(template.substitute(password='******'))\n",
|
|
""
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "73585d5d-0c8c-4786-92f2-7e0fd2653f9e",
|
|
"tags": [
|
|
"hide_input"
|
|
],
|
|
"language": "python"
|
|
},
|
|
"outputs": [],
|
|
"execution_count": null
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### List all the containers"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "e338290a-0e1d-4780-aad5-3416447be0a1"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"cmd = f'docker ps -a'\n",
|
|
"run_command()"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "5e30c110-a631-4c9b-8485-cd64d34c54d5",
|
|
"tags": [
|
|
"hide_input"
|
|
],
|
|
"language": "python"
|
|
},
|
|
"outputs": [],
|
|
"execution_count": null
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Connect to SQL Server in Azure Data Studio\n",
|
|
"It might take a couple minutes for SQL Server to launch"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "11add202-2f03-4d20-8411-d4f274910107"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"from IPython.display import *\n",
|
|
"connectionParameter = '{\"serverName\":\"localhost,' + sql_port + '\",\"providerName\":\"MSSQL\",\"authenticationType\":\"SqlLogin\",\"userName\":\"sa\",\"password\":' + json.dumps(sql_password) + ',\"options\": {\"trustServerCertificate\":true}}'\n",
|
|
"display(HTML('<br/><a href=\"command:azdata.connect?' + html.escape(connectionParameter)+'\"><font size=\"3\">Click here to connect to SQL Server</font></a><br/>'))\n",
|
|
"display(HTML('<br/><span style=\"color:red\"><font size=\"2\">NOTE: The SQL Server password is included in this link, you may want to clear the results of this code cell before saving the notebook.</font></span>'))"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "182517d3-f6d6-4ecc-b2cb-4c21a0f23b4e",
|
|
"tags": [
|
|
"hide_input"
|
|
],
|
|
"language": "python"
|
|
},
|
|
"outputs": [],
|
|
"execution_count": null
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"source": [
|
|
"### Stop and remove the container"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "416a7e11-0ea7-487d-804f-b8449f0ce5fc"
|
|
}
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"source": [
|
|
"stop_container_command = f'docker stop {container_name}'\n",
|
|
"remove_container_command = f'docker rm {container_name}'\n",
|
|
"display(HTML(\"Use this link to: <a href=\\\"command:workbench.action.terminal.focus\\\">open the terminal window in Azure Data Studio</a> and use the links below to paste the command to the terminal.\"))\n",
|
|
"display(HTML(\"Stop the container: <a href=\\\"command:workbench.action.terminal.sendSequence?%7B%22text%22%3A%22\"+stop_container_command.replace(\" \",\"%20\")+\"%22%7D\\\">\" + stop_container_command + \"</a>\"))\n",
|
|
"display(HTML(\"Remove the container: <a href=\\\"command:workbench.action.terminal.sendSequence?%7B%22text%22%3A%22\"+remove_container_command.replace(\" \",\"%20\")+\"%22%7D\\\">\" + remove_container_command + \"</a>\"))"
|
|
],
|
|
"metadata": {
|
|
"azdata_cell_guid": "1593a0a6-7009-4d0b-9f3f-ac7ed6d2bb1e",
|
|
"tags": [
|
|
"hide_input"
|
|
],
|
|
"language": "python"
|
|
},
|
|
"outputs": [],
|
|
"execution_count": null
|
|
}
|
|
]
|
|
} |