اتچ کردن دیتابیس به SQL Server در داکر

mohsen2 هفته قبل
ارسال شده در
mohsen

برای اجرا کردن SQL Server در داکر ابتدا باید ایمیج نسخه مورد نظر را با اجرای دستور زیر دریافت کنیم:

      docker pull mcr.microsoft.com/mssql/server:2022-latest
    

سپس فایل های mdf و ldf دیتابیس مورد نظر را درون فولدری خالی قرار دهیم:

      # برای مثال مسیر زیر
/path/to/your/data/
   ├── yourdb.mdf
   └── yourdb_log.ldf
    

بعد از آن نوبت به اجرای کانتینر مورد نظر است:

      docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=YourStrong@Passw0rd" \
-p 1433:1433 \
-v /path/to/your/data:/var/opt/mssql/data \
--name sqltest \
mcr.microsoft.com/mssql/server:2022-latest
    

حال باید به کانتینر sqltest وصل شویم تا بتوانیم دستور SQL اتچ کردن دیتابیس را اجرا کنیم:

      docker exec -it sqltest /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P YourStrong@Passw0rd -C
    

توجه داشته باشید که ممکن است مسیر فایل اجرایی sqlcmd بسته به نسخه مورد استفاده متفاوت باشد. در این صورت ابتدا باید مسیر مورد فایل اجرایی sqlcmd را پیدا کنید:

      docker exec -it sqltest ls /opt
    

بعد از ازای sqlcmd، باید دستور SQL زیر را در خط فرمان اجرا کنید:

      CREATE DATABASE YourDatabaseName
ON PRIMARY 
(
    FILENAME = '/var/opt/mssql/data/yourdb.mdf'
)
LOG ON
(
    FILENAME = '/var/opt/mssql/data/yourdb_log.ldf'
)
FOR ATTACH;
GO
    

اسم دیتابیس در این مثال yourdb است که بسته به دیتابیس خود باید نام آن را تغییر دهید. توجه داشته باشید که sqlcmd دستور sql را به صورت خط به خط دریافت می کند و با مشاهده دستور GO آن را اجرا میکند.

اگر در زمان اجرای دستورات با خطای دسترسی مواجه شدید باید مجوز دسترسی به فولدر دیتای را به کاربر کانتینر بدهید. ابتدا باید شناسه کاربر را پیدا کنید:

      docker exec sqltest id
    

بعد از آن دسترسی های مورد نیاز را برای فولدر دیتا به کاربر مورد نظر بدهید:

      # انتقال مالکیت فولدر دیتا به کاربر SQL
sudo chown 10001:10001 /path/to/your/data

# تعیین مجوز های مورد نیاز
sudo chmod 700 /path/to/your/data
    

راه ساده تر و کار راه انداز موقتی، دادن دسترسی به همه کاربران است که پیشنهاد نمی شود:

      sudo chmod 777 /path/to/your/data
    

بعد از طی کردن مراحل بالا می توانید به دیتابیس خود بوسیله دستور sqlcmd وصل شوید:

      docker exec -it sqltest /opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P YourStrong@Passw0rd -C -d YourDatabaseName
    
رای
0
ارسال نظر
مرتب سازی:
اولین نفری باشید که نظر می دهید!