Docker SQL Server 2017 容器 @latest。使用master数据库。
我面临的错误如下:
[S00019][15208] The certificate, asymmetric key, or private key file is not valid or does not exist; or you do not have permissions for it.
我发现最接近这个确切问题的是Stackoverflow 上的这个问题。然而,答案对我不起作用。这个问题有类似的答案。
所以通过错误的部分:
无论我尝试什么,我都无法获得要恢复的证书。我已经搜索了GitHub 问题无济于事,所以我不认为这是一个错误。我一定做错了什么。
相关代码:
--on Prod
BACKUP CERTIFICATE sqlserver_backup_cert
TO FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.cer'
WITH PRIVATE KEY (
FILE = '/var/opt/mssql/certs/sqlserver_backup_cert.key',
ENCRYPTION BY PASSWORD = 'foobar'
)
Run Code Online (Sandbox Code Playgroud)
--on Test
CREATE CERTIFICATE …Run Code Online (Sandbox Code Playgroud) 我正在运行带有自定义配置文件的 MySQL docker 容器(最新版本 - 8.0),其中包含:
======================================
[client]
default-character-set=utf8mb4
[mysqld]
collation_server = utf8mb4_unicode_ci
init-connect='SET NAMES utf8mb4'
character_set_server = utf8mb4
[mysql]
default-character-set=utf8mb4
======================================
Run Code Online (Sandbox Code Playgroud)
在 MySQL 控制台中执行:
show variables like "%coll%";
Run Code Online (Sandbox Code Playgroud)
产生这个:
+-------------------------------+--------------------+
| Variable_name | Value |
+-------------------------------+--------------------+
| collation_connection | utf8mb4_0900_ai_ci |
| collation_database | utf8mb4_unicode_ci |
| collation_server | utf8mb4_unicode_ci |
| default_collation_for_utf8mb4 | utf8mb4_0900_ai_ci |
+-------------------------------+--------------------+
Run Code Online (Sandbox Code Playgroud)
在 MySQL 控制台中执行:
show variables like "%char%";
Run Code Online (Sandbox Code Playgroud)
产生这个:
+--------------------------+--------------------------------+
| Variable_name | Value |
+--------------------------+--------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection …Run Code Online (Sandbox Code Playgroud) 我对关系 DBMS 非常熟悉,但对 Oracle 不熟悉。我在 Docker 内部运行 Oracle 18c XE(在 MacOS 上)。我使用第三方客户端(MacOS 上的 SQLPro Studio)连接到它。现在我想开始。
如果这是 MySQL,我可以发出CREATE DATABASE whatever; USE whatever;并继续处理这些表。与 Microsoft SQL Server 相同,与 PostgreSQL 类似。我还可以创建一个额外的模式来保持更好的组织。
我认为 Oracle XE 只为您提供一个数据库,我想创建一个合适的模式。此时我在海上。我认为我需要创建一个与模式关联的新用户。
我也知道不同的 RDBMS 对什么是数据库或模式有不同的想法,所以我不确定这是否是正确的定义或解决方案。
我在客户端中创建新用户或新架构都没有成功。
我试过了:
CREATE USER fred IDENTIFIED BY 'h3art0fg0ld`;
Run Code Online (Sandbox Code Playgroud)
但我收到消息:
无效的通用用户名或角色名
我还读到我应该使用类似的东西c##fred,它确实有效,但是 (a) 我真的不知道这意味着什么和 (b) 声明GRANT connect, resource, create sessions TO c##printsdb;给了我“缺少或无效特权”的消息,所以我没有进一步先。
在 Docker 容器中,我不知道我是否可以访问 SQL*Plus,这是一些在线教程所假定的。
如何创建和使用架构,或包含表集合所需的任何内容?
我在 Docker 中创建了一个 SQL Server,并且可以从 SQL Server Management Studio 成功连接到它。我将备份文件mybackup.bak从我的服务器复制到 Docker SQL 容器路径/var/opt/mssql/backup/。
我可以在 SQL Server Management Studio 中看到此文件,但是当我尝试恢复它时,出现“访问被拒绝”错误。
执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
计划地点:
在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteWithResults(字符串 sqlCommand,布尔重试)
在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteWithResults(字符串查询,布尔重试)
在 Microsoft.SqlServer.Management.Smo.BackupRestoreBase.ExecuteSqlWithResults (服务器服务器,字符串cmd)
在Microsoft.SqlServer.Management.Smo.Restore.ReadBackupHeader(服务器srv)
在Microsoft.SqlServer.Management.RelationalEngineTasks.RestoreUtil.GetSourceDbNames(ICollection`1 bkdevList,字符串凭据,IBackgroundOperationContext backgroundContext)
在Microsoft。 SqlServer.Management.RelationalEngineTasks.RestoreDatabaseDialogController.<>c__DisplayClass8.b__7(IBackgroundOperationContext backgroundContext)无法打开备份设备“/var/opt/mssql/backup/Keycloak.bak”。操作系统错误 5(访问被拒绝。)。
RESTORE HEADERONLY 异常终止。(.Net SqlClient 数据提供程序)如需帮助,请单击: https: //learn.microsoft.com/sql/relational-databases/errors-events/mssqlserver-3201-database-engine-error
服务器名称:155.155.155.155,1433
错误号:3201
严重性:16
状态:2
行号:1
您能告诉我如何授予此访问权限吗?这将是很大的帮助。我看到这个堆栈问题,但我不知道这个人如何没有找到访问被拒绝的问题。
我正在尝试在 Windows 10 的 docker 容器中安装 Oracle XE 18c。我已经安装了 docker,我需要按照此处的说明构建映像。
我克隆了 git 存储库,但我坚持这一步,因为我克隆的是 Linux 命令而不是 Windows。
克隆后:
git clone https://github.com/oracle/docker-images.git
Run Code Online (Sandbox Code Playgroud)
如果我cd要docker-images\OracleDatabase\SingleInstance\dockerfiles\18.4.0构建图像,我会看到以下命令sh,而不是exeor bat:
12/28/2019 01:36 PM 1,137 checkDBStatus.sh
12/28/2019 01:36 PM 905 checkSpace.sh
12/28/2019 01:36 PM 75 Checksum.xe
12/28/2019 01:36 PM 2,752 Dockerfile.xe
12/28/2019 01:36 PM 533 oracle-xe-18c.conf
12/28/2019 01:36 PM 6,132 runOracle.sh
12/28/2019 01:36 PM 775 setPassword.sh
Run Code Online (Sandbox Code Playgroud)
如何在 Windows 中构建此映像?
使用它docker-compose.yml我创建了一个容器:
version: "3.9"
services:
database:
image: mcr.microsoft.com/mssql/server
user: root
restart: always
container_name: ContainerNameHere
volumes:
- /Organization/Databases:/var/opt/mssql/data
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=password_here
- MSSQL_PID=Express
ports:
- 1433:1433
logging:
driver: none
networks:
- NetworkNameHere
networks:
NetworkNameHere:
name: NetworkNameHere
driver: bridge
Run Code Online (Sandbox Code Playgroud)
它的用户数据库为零。它只是一个简单的空 SQL Server docker 容器,没有数据库,也没有数据。
但这是我的top命令的结果:
正如你所看到的,它完全摧毁了我的 VPS。
这太令人沮丧了,微软团队还没有回复我。
为什么 SQL Server 的 docker 容器会这样,我应该如何解决这个问题?
我有 10 GB 可用空间:
df -h /
已用文件系统大小 Avail Use% 安装在
/dev/sda1 20G 8.9G 10G 47% /
我的 SQL …
docker ×6
sql-server ×3
linux ×2
oracle ×2
certificate ×1
containers ×1
debian ×1
mysql ×1
oracle-18c ×1
oracle-xe ×1
schema ×1
windows ×1