2018年1月25日木曜日

Azure IaaSにDシリーズとAシリーズのみで、EシリーズやBシリーズ、Gシリーズ、Lシリーズが出てこない問題(西日本、東日本)

仮想マシンを完全に再起動しないと出てきません。
OSを停止させただけでは、仮想マシン基盤が動作しており、(もちろん課金対象)リージョン全体で使える仮想マシンの種類が選べません。

正しくは、Azure Portalサイトで仮想マシンの「停止」を行い、サイズを変更する必要があります。




2017年12月26日火曜日

SQL Server Management Studio 変更の保存が許可されていません。 行った変更には、次のテーブルを削除して再作成することが必要になります。 再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。


エラーメッセージ
SQL Server Management Studio 変更の保存が許可されていません。 行った変更には、次のテーブルを削除して再作成することが必要になります。 再作成できないテーブルに変更を行ったか、テーブルの再作成を必要とする変更を保存できないようにするオプションが有効になっています。



対応
「ツール」→「オプション」→「デザイナ」の「テーブルの再作成を必要とする変更を保存できないようにする」のチェックをはずす。



2017年12月23日土曜日

ファイル 'F:\System Volume Information\WPSettings.dat' の権限設定を更新できませんでした。ファイルの権限設定は 'D:P(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICI;FA;;;CO)(A;OICI;FA;;;S-1-5-80-3880718306-3832830129-1677859214-2598158968-1052248003)' に設定されることになっていました。

1)エラー

タイトル: Microsoft SQL Server 2016 セットアップ
------------------------------

次のエラーが発生しました:

ファイル 'F:\System Volume Information\WPSettings.dat' の権限設定を更新できませんでした。ファイルの権限設定は 'D:P(A;OICI;FA;;;BA)(A;OICI;FA;;;SY)(A;OICI;FA;;;CO)(A;OICI;FA;;;S-1-5-80-3880718306-3832830129-1677859214-2598158968-1052248003)' に設定されることになっていました。

[再試行] をクリックしてやり直すか、[キャンセル] をクリックしてこの操作を取り消し、セットアップを続行してください。

ヘルプを表示するには http://go.microsoft.com/fwlink?LinkID=20476&ProdName=Microsoft%20SQL%20Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=13.0.4001.0&EvtType=0x88792597%25400xBB814387 をクリック

------------------------------
BUTTONS:

再試行(&R)
キャンセル
------------------------------



2)対応方法

Fドライブ直下にしているのは、Auzreのテンポラリドライブを使っているためです。

tempbは一旦デフォルトの設定で作ってから移動します。

D:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Data

--tempdb
ALTER DATABASE tempdb MODIFY FILE ( NAME = tempdev , FILENAME = 'F:\tempdb.mdf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp2 , FILENAME = 'F:\tempdb_mssql_2.ndf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp3 , FILENAME = 'F:\tempdb_mssql_3.ndf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp4 , FILENAME = 'F:\tempdb_mssql_4.ndf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp5 , FILENAME = 'F:\tempdb_mssql_5.ndf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp6 , FILENAME = 'F:\tempdb_mssql_6.ndf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp7 , FILENAME = 'F:\tempdb_mssql_7.ndf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = temp8 , FILENAME = 'F:\tempdb_mssql_8.ndf' )
ALTER DATABASE tempdb MODIFY FILE ( NAME = templog , FILENAME = 'F:\templog.ldf' )


メンテナンスを行うため、 SQL Server のインスタンスを停止する。
ファイルを新しい場所に移動する。
SQL Server のインスタンスまたはサーバーを再起動します。
次のクエリを実行して、ファイルが変更されたことを確認します。

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'tempdev';

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'temp2';

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'temp3';

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'temp4';

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'temp5';

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'temp6';

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'temp7';

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'temp8';

SELECT name, physical_name AS CurrentLocation, state_desc 
FROM sys.master_files
WHERE name = 'templog';

System.NotSupportedException: 型 'System.Data.SqlClient.SqlClientFactory' のプロバイダー ファクトリのプロバイダー名を特定できません。ADO.NET プロバイダーがアプリケーション config にインストールまたは登録されていることを確認してください。

1)発生しているエラー

500 : InternalServerError
システムエラーが発生しました。管理者に連絡してください。
System.NotSupportedException: 型 'System.Data.SqlClient.SqlClientFactory' のプロバイダー ファクトリのプロバイダー名を特定できません。ADO.NET プロバイダーがアプリケーション config にインストールまたは登録されていることを確認してください。

事象としては、IISではデバック実行できるが、IIS Expressではデバック実行でエラーが発生する。
IIS Expressのほうがデバックしやすいので対応を行う。

2)対応 web.configに↓の一行を追加
<remove invariant="system.data.sqlite.ef6" />
を追加

Web.configのDbProviderFactoriesタグの全体
  <system.data>
    <DbProviderFactories>
  <remove invariant="System.Data.SQLite.EF6" />  <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
      <remove invariant="System.Data.SQLite" />
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
    </DbProviderFactories>
  </system.data>

以上

2017年12月19日火曜日

Azureチームからのメール問い合わせについて、スタックオーバーフローを紹介しているところに感銘を受けた

ここ最近(4,5年)、OSSの取り組みなどオープンな企業になっていくマイクロソフトは素敵だなぁって思う。
昔は、仕事でマイクロソフト製品を扱うと独自でクローズドな感覚で仕事をしていると感じていました。しかし、今のマイクロソフトは、市場の感覚でマイクロソフト製品、サービス群を使えていて、それらを絡めて全体として良いソリューション、サービスが世の中に提供できるよになってきていると感じています。
エンジニアにとっても、市場にとってもバリューの高い企業に返り咲いたと改めて実感。

メールの抜粋
------------------------------------------------------------
For questions or feedback, please visit Stack Overflow or contact Azure support.
    
Thank you,

Your Azure Team    

------------------------------------------------------------


2017年12月16日土曜日

SQL Serverで既定のデータベースファイルの作成場所を変更する。


SQL Server Management Studioでデータベースサーバの「プロパティ」を選択する。











データベースの設定で既定の場所を修正する



↓修正

データベースサーバを再起動する



SQL Server Management Studioで以下のクエリを実行して検証する。
create database kiyotaka
go

D:\SQLDataにデータファイルが出来ていて、


D:\SQLLogにログファイルが出来ていることを確認しました。



環境:
Microsoft SQL Server 2016 (SP1-CU5) (KB4040714) - 13.0.4451.0 (X64)
        Sep  5 2017 16:12:34
        Copyright (c) Microsoft Corporation
        Developer Edition (64-bit) on Windows 10 Enterprise 6.3 <X64> (Build 16299: ) (Hypervisor)

2017年12月14日木曜日

SQL Server 2016 insert文で存在しない項目を指定してもストアドプロシージャが成功する

検証用のクエリ
------------------------------------------------------------
create database test
go
use test
go

create table test(i int, n nvarchar(50));
create table test2(i int, n nvarchar(50));

create or alter procedure testsp as
begin
insert into test (i,aaaaaaaaa) select bbbbbbbbb, n from test2 inner join #wrk on #wrk.id = test2.i;
end
コマンドは正常に完了しました。
・・・えっ?!
testテーブルには、aaaaaaaaaなんで項目がないのにエラーになる。
これはストアドのビルドでエラーとして判断してもらいたいものです。

環境:
・Microsoft SQL Server 2016 (SP1-CU2) (KB4013106) - 13.0.4422.0 (X64)
・Microsoft SQL Server 2016 (SP1-CU6) (KB4037354) - 13.0.4457.0 (X64)