Dapr и использование sql statestore вместо redis

Мы хотели бы протестировать переключение с Redis на компонент хранилища состояний sql.

Судя по документации, мы можем сделать это с двумя небольшими изменениями:

      apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: statestore
spec:
  type: state.sqlserver  # Switch from redis
  version: v1
  metadata:
  - name: connectionString
    value: Server=db;Database=dapr;user id=sa;Password=Your_password123;
  - name: tableName
    value: dapr  

И в нашем файле компоновки докеров мы добавили sql-сервер

        db: # added 
    image: "mcr.microsoft.com/mssql/server"
    ports:
      - "1433:1433"
    environment:
      SA_PASSWORD: "Your_password123"
      ACCEPT_EULA: "Y"
    networks:
      - smi-network

Я предполагал, что в базе данных dapr будет создана новая таблица с именем dapr. Но вместо этого мы получаем следующую ошибку:

      level=warning msg="error initializing state store statestore (state.sqlserver/v1): failed to create db schema: Unable to open tcp connection with host 'db:1433': dial tcp 172.29.0.2:1433: connect: connection refused" app_id=daprbackend 

Я предположил, что я пропустил, поскольку все находятся в одной сети smi-network базу данных можно будет вызвать (если я войду в оболочку db, Я вижу, что IP-адрес такой же 172.29.0.2 )?

1 ответ

Глядя на код, база данных создается не для вас. Только стол. Поэтому, если ваша строка подключения включает базу данных, вы должны сначала ее создать.

Если вы не включаете базу данных в строку подключения, master база данных будет использоваться и таблица будет создана там.

Другие вопросы по тегам