标签: google-cloud-sql

启动时运行 MS SQL Server 脚本

当我启动(或重新启动)我的 Windows 2012 R2 服务器实例(Google Cloud Server)时,我尝试运行 SQL 脚本。我使用 SQL 脚本、批处理文件和任务调度程序来执行此操作。

为了测试,我创建了一个简单的 SQL 脚本,将日期戳添加到表中:

USE <Databasename>
GO

INSERT INTO testingTable(time_Stamp)
VALUES (GETDATE())

SELECT * FROM testingTable
Run Code Online (Sandbox Code Playgroud)

(其中Databasename显然包含特定数据库的名称)

批处理文件如下所示:

sqlcmd -S <servername> -i "C:\Temp\testQuery.sql" > C:\Temp\output.txt
Run Code Online (Sandbox Code Playgroud)

我将所有内容输出到文本文件。当我运行批处理文件时,输出看起来不错:它打印一个列表,其中包含我运行此 SQL 查询的所有时间并将其保存在文本文件中。

我已安排此任务在启动时运行(按照此处的步骤操作: https: //www.sevenforums.com/tutorials/67503-task-create-run-program-startup-log.html)。我在这里尝试了一系列设置,但似乎没有任何效果,包括论坛中突出显示的确切设置。

当我现在重新启动服务器时,输出文件显示以下错误消息:

Msg 904, Level 16, State 3, Server <servername>, Line 1
Database 7 cannot be autostarted during server shutdown or startup.
Msg 208, Level 16, State 1, Server <servername>, Line 2
Invalid object name 'testingTable'.
Run Code Online (Sandbox Code Playgroud)

似乎 MS SQL …

sql sql-server batch-file sql-server-2008 google-cloud-sql

5
推荐指数
1
解决办法
4873
查看次数

云sql连接超时

我有一个 Laravel 应用程序,正在尝试迁移到 Google Cloud。我已经在 App Engine 上设置了它,但是每当我尝试访问它任何需要数据库连接的非静态页面时,应用程序都会抛出以下错误:

2017-08-02 10:21:18,983 INFO _FILE_ONLY_ 2017-08-02 08:21:12 default[20170802t095328] [02-Aug-2017 08:21:12] 警告:[pool app] child 62 在 stderr 中说: “注意:PHP 消息:[2017-08-02 08:21:12] 生产。错误:PDOException:SQLSTATE[HY000] [2002] /app/vendor/doctrine/dbal/lib/Doctrine/DBAL/ 中的连接超时驱动程序/PDOConnection.php:43”

2017-08-02 10:21:18,984 INFO _FILE_ONLY_ 2017-08-02 08:21:12 default[20170802t095328] [02-Aug-2017 08:21:12] 警告:[pool app] child 62 在 stderr 中说: “堆栈跟踪:”

2017-08-02 10:21:18,986 INFO _FILE_ONLY_ 2017-08-02 08:21:12 default[20170802t095328] [02-Aug-2017 08:21:12] 警告:[pool app] child 62 在 stderr 中说: “#0 /app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php(43): PDO->__construct('mysql:host=35.1...', 'my_db_user', 'my_db_pass' , 大批)”

任何解决此问题的帮助将不胜感激。谢谢!

google-cloud-sql

5
推荐指数
0
解决办法
7271
查看次数

通过 Bitbucket Pipelines 上的代理正确访问 Google Cloud SQL

将 Cloud SQL 数据库代理到 Bitbucket Pipelines 的正确方法是什么?

我有一个 Google Cloud SQL Postgres 实例(还尝试了 MySQL DB)。

打开所有连接端口允许 bitbucket 管道正确部署我的基于 Django 的 Google App Engine 项目,基于此示例管道 - https://github.com/GoogleCloudPlatform/continuous-deployment-bitbucket/blob/master/bitbucket-pipelines.yml

但是,当我尝试限制对 Cloud SQL 实例的访问并改用 cloud_sql_proxy 时,我可以在本地正确部署,但 Bitbucket 总是找不到 SQL Server

我的 bitbucket-pipelines.yml 看起来像这样:

        - export CLOUDSDK_CORE_DISABLE_PROMPTS=1
        # Google Cloud SDK is pinned for build reliability. Bump if the SDK complains about deprecation.
        - SDK_VERSION=127.0.0
        - SDK_FILENAME=google-cloud-sdk-${SDK_VERSION}-linux-x86_64.tar.gz
        - curl -O -J https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/${SDK_FILENAME}
        - tar -zxvf ${SDK_FILENAME} --directory ${HOME}
        - export PATH=${PATH}:${HOME}/google-cloud-sdk/bin
        # Install Google App …
Run Code Online (Sandbox Code Playgroud)

django google-app-engine google-cloud-sql google-cloud-platform bitbucket-pipelines

5
推荐指数
0
解决办法
768
查看次数

如何通过 Python 使用 GCP Cloud SQL 作为数据流源和/或接收器?

是否有任何指南可用于使用 Google Cloud SQL 作为数据流读取源和/或接收器?

在Apache Beam Python SDK 2.1.0 文档中,没有一章提到 Google Cloud SQL。但有关于 BigQuery 的文章。

当我阅读教程Performing ETL from a Relational Database into BigQuery时,我看到他们在此过程中使用导出到文件的数据作为源。这意味着中间必须有一个出口步骤,但这并不理想。

具体使用Cloud SQL时有什么需要注意的具体问题吗?对于源和接收器?

python google-cloud-sql google-cloud-dataflow

5
推荐指数
1
解决办法
4342
查看次数

处理 gcloud sql 实例创建期间的超时

我用来gcloud sql instances create创建 CloudSQL 实例。通常,该命令会超时,但会提供一个等待数据库创建完成的命令。

$ gcloud sql instances create mydb
Creating Cloud SQL instance...failed.
ERROR: (gcloud.sql.instances.create) Operation https://www.googleapis.com/sql/v1beta4/projects/foobar/operations/abcd is taking longer than expected. 
You can continue waiting for the operation by running `gcloud sql operations wait --project foobar abcd`
$ gcloud sql operations wait --project foobar abcd
Waiting for [https://www.googleapis.com/sql/v1beta4/projects/foobar/operations/abcd]...done.
NAME  TYPE    START                          END                            ERROR  STATUS
abcd  CREATE  2018-03-19T15:04:29.477+00:00  2018-03-19T15:10:08.561+00:00  -      DONE
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以配置超时gcloud sql instances create?我似乎在文档中找不到任何内容,甚至找不到它默认使用的超时。

另一种选择是异步启动实例创建,列出挂起的操作并等待其完成:

$ gcloud sql instances create …
Run Code Online (Sandbox Code Playgroud)

google-cloud-sql google-cloud-platform

5
推荐指数
1
解决办法
3762
查看次数

即使单击“允许”后,也会出现“执行该操作需要授权”消息

我最近遇到了一个授权新的 Google App Script 项目的问题,特别是使用 Cloud SQL 管理 API 的项目。

相同的代码存在于之前授权的 GAS 项目中并且工作正常,但是如果我获取 GAS 项目的副本并尝试第一次运行某个函数,我将无法完成授权过程。下面列出了我正在经历的屏幕:

  1. 需要授权。- 单击“查看权限”
  2. 选择一个帐户来授权Google项目。- 点击我的帐户
  3. 此应用程序未经验证!- 单击“转到项目(不安全)”
  4. Google 项目想要访问此范围列表。- 单击“允许”
  5. 执行该操作需要授权。

警告屏幕 (3) 是该过程中最近添加的内容。我不记得今年早些时候创建和运行新项目时遇到过它。我想知道 Google 最近是否对其 OAuth2.0 的安全实现进行了任何更改。

此外,此问题似乎仅影响对 Cloud SQL 管理 API 的 REST 调用。在上面提到的同一个项目中,我能够运行将数据写入同一 Google 项目中的 BigQuery 表的函数,该项目也托管 Cloud SQL 实例。显然,某些范围和代码可以工作。

“ https://www.googleapis.com/auth/sqlservice.admin ”范围包含在我请求并批准的范围列表中。我什至尝试手动编辑 URL 以添加更多请求的范围,但它仍然无法让我通过“执行该操作需要授权”屏幕。

有人有什么想法吗?

编辑:

触发身份验证的相关代码。

// Function to get the ip address of a given CloudSQL instance
function _getInstanceIpAddress_(projectId, sqlInstance) {

  var token = _getAuthenticationToken_();

  // Create the header authorisation …
Run Code Online (Sandbox Code Playgroud)

google-api google-apps-script oauth-2.0 google-cloud-sql google-oauth

5
推荐指数
1
解决办法
3418
查看次数

为什么 Google Cloud SQL 连接失败:“(psycopg2.DatabaseError) 服务器意外关闭了连接”

我正在与一位在 GCP Cloud SQL 部署方面遇到问题的客户合作。有问题抄录如下:

连接到 Cloud SQL 时,连接经常会间歇性失败。这可能看起来像一个 Python 错误:

(psycopg2.DatabaseError) server closed the connection unexpectedly
    This probably means the server terminated abnormally
    before or while processing the request.
Run Code Online (Sandbox Code Playgroud)

或者,在 Node 中,它可能看起来像超时错误或套接字挂起:

TimeoutError: Knex: Timeout acquiring a connection. The pool is probably full. Are you missing a .transacting(trx) call?
Run Code Online (Sandbox Code Playgroud)

据我们所知,我们已正确配置所有内容,并遵循 Cloud SQL 故障排除指南中的所有说明。我们有一个具有 20GB 内存的实例,应支持 250 个连接。应将超时设置为以正确的时间间隔(< 10 分钟)刷新连接。所以我们不确定这里发生了什么。

我知道这并不算什么,但我想尝试尽职调查,看看我们可以如何帮助他们。我意识到我们可能无法得到关于正在发生的事情的完美答案,但我可以向他们询问一些额外的问题来帮助调试问题,这将是一个很大的帮助。

我发现这个类似的问题似乎描述了相同的问题,但没有答案:PostgreSQL 'Sever Closed the Connection Unexpected'

谢谢你的帮助!

google-cloud-sql google-cloud-platform

5
推荐指数
1
解决办法
2993
查看次数

将 ASP.NET Core 应用程序连接到 Google Cloud SQL

我使用 Asp.NET Core 创建了简单的应用程序。它使用实体框架和本地数据库。我将我的应用程序部署到 Google Cloud App Engine,但老实说,我不知道如何处理我的数据库。现在我正在使用本地 sql 服务器,我的 appSettings.json 如下所示:

{
  "connectionStrings": {
    "smogInfoDBConnectionString": "Server=(localdb)\\mssqllocaldb;Database=SmogInfoDB;Trusted_Connection=True",
    "hangfireConnectionString": "Server=(LocalDB)\\MSSQLLocalDB;Integrated Security=true"
  }
}
Run Code Online (Sandbox Code Playgroud)

当我在计算机上调试和使用应用程序时,它工作得很好。我知道我需要创建一个 SQL 实例,但如何将我的应用程序连接到该数据库服务器?如何制作连接字符串?

c# asp.net google-app-engine google-cloud-sql

5
推荐指数
1
解决办法
2647
查看次数

Google CloudSQL for PostgreSQL HA 集群因维护而停机且无故障转移

今天早上,我们的 Google CloudSQL for PostgreSQL 高可用 (HA) 集群出现了 5 分钟多一点的停机时间。这是在 Google 要求您提供的维护期间。

Google 很清楚为什么他们需要维护时段(请参阅此处)。令我们震惊的是停机时间的持续时间并且没有执行故障转移。

文档清楚地表明维护是在实例上执行的(而不是在整个集群上执行的)。那么为什么没有像这里记录的那样执行回退呢?他们说,这可能需要长达 60 秒的时间。但花了5分钟多一点的时间。

然后又是;这是定期维护。如果您预料到的话,不必进行自动故障转移。

我们是否误解了文档,我们是否有不切实际的期望,或者我们是否错误配置了我们的应用程序?

google-cloud-sql

5
推荐指数
1
解决办法
1905
查看次数

GCP Cloud SQL 的私有 IP 地址范围被忽略

我一直在尝试使用私有 IP 连接设置 Google Cloud SQL,其中绑定的 IP 范围是手动分配的,但没有成功。我不知道这是否是实现中的一个错误,因为它仍处于测试阶段,文档中是否缺少某些内容,或者我只是做错了什么。(命令行会话位于底部,用于快速总结我所看到的内容。)

最初,我将其设置为自动分配 IP 范围。一切都工作得很好,除了它选择了 172.17.0.0/24,这是我的 GCE 实例上由 docker 管理的网络之一,所以我无法从那里连接(但可以在另一台没有 docker 的机器上连接)。于是我尝试走手动分配路线。

首先,我拆除了代表我创建的所有关联网络对象。有两个 VPC 对cloudsql-postgres-googleapis-com等 互连,servicenetworking-googleapis-com我将其删除,然后我确认与它们关联的路由条目也消失了。

然后,我按照https://cloud.google.com/vpc/docs/configure-private-services-access#allocing-range的指示创建 10.10.0.0/16,因为我希望它出现在我的default网络中,即自动模式,所以我仅限于下半部分(目前是清晰的)。

此时,我返回到 Cloud SQL 实例创建页面,因为它应该为我完成剩下的工作。我选中“私有IP”框,然后选择 default网络。

我当时没有做笔记,所以我的记忆可能有缺陷,特别是因为我在后来的尝试中的经历始终不同,但我记得看到的是在网络选择下拉列表下方,它说“此实例将使用现有的托管服务连接”。我认为这意味着它将使用我创建的地址范围,并继续创建实例,但实例再次登陆 172.17.0.0/24 网络。

大约在第三次时,即之前该消息所在的位置,它有一个选择框,列出了我的地址范围。同样,我的记忆力很差,所以我不知道我是否看到或点击了“连接”按钮,但最终结果是一样的。

在第四次尝试时,我确实注意到了“连接”按钮,并确保单击它,并等待它说它成功了。它确实做到了,有点:它用我之前看到的有关使用现有连接的相同消息替换了下拉列表和按钮。同样,该实例是在错误的网络上创建的。

我尝试了第五次,这次创建了一个具有新名称的新地址范围 -google-managed-services-default这是我第一次开始时自动分配给它的名称(也是私人服务访问文档建议的名称)。但即使使用该名称并明确选择它,我仍然会在错误的网络上得到实例。

事实上,我现在看到点击“连接”后,我可以去检查路由,看到创建的路由是到172.17.0.0/24。

如果我从命令行执行所有操作,似乎也会发生同样的事情:

$ gcloud beta compute addresses list
NAME                             ADDRESS/RANGE    TYPE      PURPOSE      NETWORK  REGION    SUBNET  STATUS
google-managed-services-default  10.11.0.0/16     INTERNAL  VPC_PEERING  default                    RESERVED
$ gcloud beta services vpc-peerings connect \ 
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default …
Run Code Online (Sandbox Code Playgroud)

google-cloud-sql google-cloud-platform

5
推荐指数
1
解决办法
3896
查看次数