タグ付けされた質問 「sql-server」

Microsoft SQL Serverに関する質問。質問がバージョン固有の場合は、そのバージョン専用にタグを付けてください。SQL Serverの質問はここにあるのですか、それとも別のサイトにあるのですか?下の行のsql-serverタグについてのリンクをクリックします。

4
PostgreSQLデータベースをMS SQL 2005に移行するのに最適なツールですか?
テーブルスキーマとデータの両方を含め、MS SQL Server 2005(またはおそらく2008)に移行したいPostgreSQL 8.3.1のデータベースがあります。データベースのサイズは約50GB、行数は約400,000,000なので、単純なINSERTステートメントは問題外だと思います。誰もがこの移行を実行するための最良のツールを推奨できますか?明らかに信頼性が必要であり、データはターゲットDBでもソースDBでもまったく同じであり、このボリュームのデータを妥当な時間内にコピーできる必要があります。

2
名前付きSQL Serverインスタンスのエイリアスを作成する方法
開発者のコ​​ンピューターには、developer_2005という名前のSQL Serverインスタンスがあります。私たちが作成しているC#アプリケーションのリソース設定ファイルでは、インスタンス名はfoob​​arに設定されています(実際ではありませんが、例として)。したがって、アプリケーションを(デバッグまたはリアルタイムで)実行すると、foob​​arという名前のローカルホスト上のSQL Serverに接続しようとします。 エイリアスなどを作成して、アプリケーションが実際にfoob​​arという名前のlocalhostでSQL Serverを見つけ、実際にはdeveloper_2005という名前のインスタンスに接続しているのではないかと思います。 アプリケーションの構成ファイルの接続文字列は、データソース= localhost \ foobar;初期カタログ= barfoo;統合セキュリティ= Trueで、プロバイダー名はSystem.Data.SqlClientです。localhost \ foobarをlocalhost \ developer_2005に変更すると、アプリケーションは正常に接続できます。ファイルの文字列を変更する必要がないように、エイリアスを作成するにはどうすればよいですか? SQL Server Management Studioで、登録されたサーバー名 "localhost \ developer"を使用してサーバー登録を作成しようとしましたが、これでは効果がなかったようです。それが実際に何をしたかさえわかりません...しかし、SQL Server構成マネージャー\ SQLネイティブクライアントの構成\エイリアスを発見しました。そして、私はこれが解決策があるところだと思います。しかし、私は新しいものを追加する方法を完全に理解できません...新しいものを作成するとき、私はエイリアス名、ポート番号、プロトコル、およびサーバーを提供する必要があり、私は実際に何を入れるべきか手掛かりがありませんそれらのどちらか。

3
すべての列を変更するよりもSQL Serverとデータベースの照合順序の不一致を解決する簡単な方法はありますか?
免責事項:私はこの質問が以前に100回尋ねられたことを知っていますが、私が先に進み、それを行うために多くのコードを記述/ソースする前に見逃していた簡単な解決策がないかどうかを確認したかっただけです。 私たちのソフトウェアは、元々SQL Server 7用に設計されたデータベースを使用しているため、それを作成するすべてのスクリプトは、文字列に明示的な照合を指定していません。代わりに、データベースがSQL Server 2000以降に作成または復元されると、すべての列がデータベース照合を継承します(これSQL_Latin1_General_CP1_CI_ASは、SQL Server 7のデフォルトだったためです)。 理論的には、これはそれほど重要ではありません。私たちのデータベースが顧客のサーバーでゼロから作成された場合、それは顧客のサーバーの照合順序(通常は最新のインストールのデフォルトLatin1_General_CP1_CI_AS)を継承し、すべてが機能するためです。ただし、このシナリオは、データベースのバックアップを送信するか、データベースのバックアップを送信すると失敗し、コードが一時テーブルなどにアクセスしようとすると、恐ろしい照合不一致エラーが発生します。 SQL Serverインスタンスをインストールまたは再構築して、推奨される照合順序を使用するようにお客様に説明しましたが、もちろん、常にそうであるとは限らず、常に可能であるとは限りません。 新しいデータベースの作成とデータのコピーを含むソリューションは実際には実用的ではありません。ライブデータベースで手を振って、データを乱すことなくすべての列を修正できる「魔法の杖」が必要です。私はこれを行うユーティリティを書くことを考えていますが、それはかなり大きな仕事になるので、誰かより簡単な提案はありますか?
8 sql-server  sql 

6
SQL Serverがリモートマシン/ドライブでバックアップできるようにする
SQL Server(2000、2005、2008)を使用していて、リモートドライブにバックアップするために、SQLエージェント(または、単純なバックアップデータベース 'xxx' to disk = 'yyy')を使用したいと考えています。 つまり、SQLマシンにマップされたドライブがあります。例:\\ otherbox \ someshareにマップされる「M:」 デフォルトでは、SQL Serverはこのようなドライブへのバックアップを許可しませんが、それを有効にする方法はあると思います。誰かがドキュメントを私に指摘できますか? 前もって感謝します。

5
ストアドプロシージャからのsp_start_jobの呼び出し
開発者は、.NetコードからSQL Serverエージェントジョブを開始できる必要があります。msdb..sp_start_jobを呼び出してそれを実行できることはわかっていますが、一般ユーザーアカウントにジョブを実行するための直接アクセス権を与えたくありません。 私がしたいのは、WITH EXECUTE AS句を使用してアプリケーションのデータベースにストアドプロシージャを作成し、プロキシアカウントを偽装することです。現在の手順は次のとおりです。 CREATE PROCEDURE dbo.StartAgentJob WITH EXECUTE AS 'agentProxy' AS BEGIN EXEC msdb.dbo.sp_start_job N'RunThisJob'; END ただし、これを実行すると、次のメッセージが表示されます。 The EXECUTE permission was denied on the object 'sp_start_job', database 'msdb', schema 'dbo'. 何か案は?これはSQL2005でこれを行うための最良の方法ですか?

7
誰がテーブルをドロップしたかを特定する方法はありますか?
本番データベースのテーブルが「不思議なことに」消えてしまいました。 誰かが一体何が起こったかを診断する方法を知っていますか?そして誰がやったの? 編集1:これはセキュリティが弱い内部アプリです。すべてのアプリ(もちろん私のものを除く;-)はSQLインジェクションに対して脆弱ですが、ユーザーは非常に洗練されておらず、テーブル名はすぐにわかるものではなかったため、SQLインジェクションではなかったと思います(そうではありません)それが重要である...質問の範囲を超えているようなものです)。 編集2:また、参考までに。このテーブルは長い間存在していたため、復元しても「元に戻す」ことはできませんでした。

2
サロゲートIDキーを持つクラスター化インデックスのFILL FACTORの正しい値
IDの主キーを持つクラスター化インデックスを持つ大きなテーブルがあります。ページ分割を最小限に抑えるために、このテーブルのFILL FACTORの正しい値を決定しています。断片化を測定して適切なアクションを実行するスクリプトを毎日実行して、インデックスを維持します。テーブルには可変長の列が含まれています。 私の最初の考えは100に設定することでした(レコードはテーブルの最後にのみ書き込まれるため)が、可変長の列を変更するとページ分割も発生する可能性があると想定し、90に向かっています。 助言をいただければ幸いです。

5
SharePointコンテンツデータベースの最大サイズ
昨日MCMを教えている間にSharePointの達人と話すことからのもう1つの質問。SharePointのガイドラインでは、100GBを超えるコンテンツデータベースはサポートされていません。これらのガイドラインの背後にある理由になってなければ、私は、コンテンツデータベースを聞いて興味が大きくなる 100ギガバイトよりも、それらとあなたの経験(主に周りのパフォーマンス、災害復旧、およびHAはプロビジョニング)。 SharePointのインストールをどこまでプッシュできましたか?1TBを超えるコンテンツデータベースの古本の話を聞いたことがありますが、SharePoint管理者からの連絡をお待ちしています。 あなたが持っている情報をありがとう。



3
SQL Serverとハイパースレッディングに関する現在の知識は?
多くの記事(Slava Oksの元のSQL 2000記事とKevin KlineのSQL 2005アップデートを参照)は、SQLサーバーでハイパースレッディングを無効にするか、少なくともサーバーで有効にする前に特定のワークロードをテストすることを推奨しています。 真のマルチコアプロセッサがハイパースレッドプロセッサに取って代わるため、この問題は次第に関連性がなくなりますが、この問題に関する現在の知識は何ですか?このアドバイスは、SQL 2005 64ビット、SQL 2008、またはWindows Server 2008で何か変わりますか? 理想的には、これはステージング環境で事前にテストする必要がありますが、すでにHTを有効にして運用環境にしたサーバーについてはどうでしょうか。発生しているパフォーマンスの問題がHTに関連している可能性があるかどうかを確認するにはどうすればよいですか?SQLパフォーマンスの向上に取り組むときに通常私が追求する他のすべてのものとは対照的に、その方向を示す可能性があるperfmonカウンターの特定の組み合わせはありますか? 編集:これは、一部の高CPUサーバーで全面的な改善の可能性があるため、特に魅力的ですが、クライアントは、ハイパースレッディングを無効にすることで本当にメリットがあるサーバーを特定するのに役立つ具体的なものを見たいと思っています。もちろん、従来のパフォーマンスのトラブルシューティングは継続していますが、少しでも役立つ場合があります。

3
SQL Server 2005/2008のどのバックアップ復元ソリューションが私の要件に最もよく一致しますか?
SQLジョブを使用してSQL 2005データベースをローカルでバックアップし、BackupExecでそれらをテープにコピーしました。同時に、MS Data Protection Managerを使用して、1日を通して増分バックアップを作成します。テープは、オフサイトで取得する夜間のバックアップにすぎません。DPMを使用すると、15分単位で復元できます(または、夜間の完全バックアップにより、高速に復元できます)。私たちの最も一般的な用途は、開発サーバーにDBを復元することです。これは1日に数回行います。DPMの置き換えを検討しており、BackupExecもアップグレードしています。 引き続き、障害復旧バックアップとしてBackupExecを使用しますが、主にデータベースのコピーを開発サーバーに配置するために使用されるDPMの交換が必要です。理想的には、15分ごとに増分バックアップを実行し、現在のように任意のサーバーにいつでも復元できるソリューションを見つけたいです。さらに、復元を自動化できる場合、および/または他のユーザーにアクセス権を付与するサーバーにデータベースを復元するためのアクセス権を付与できる場合があります。コピーを数週間または数か月(おそらく1週間後には1日にフルコピー)、または基本的にローカルディスクで許可される限り保存します。 今日はGoogleで検索を開始していますが、ここから専門家の意見を聞きたいと思っていました。

3
24時間365日のシステムでデータベースのメンテナンスを実行する方法
私は、パートタイムDBAの役割を引き継いだソフトウェア開発者です。私は、SQL Server 2008上の小規模で大容量の24時間365日のデータベースによるアプリケーションバックエンドを担当しています。 DBには他にもデータがありますが、重要な部分は50GB、7.5Mの行テーブルであり、ピーク負荷時に1秒あたり100Kのリクエストを処理します。これは99%以上の読み取りトラフィックですが、書き込みは一定であり、必要です。 メンテナンスウィンドウなしで定期的なメンテナンスを実行できる必要があります。インデックスの再構築、古いデータを削除するジョブ、Windows Update、またはハードウェアのアップグレードを言ってください。私が見たアドバイスのほとんどは、「メンテナンスウィンドウの作成」に沿っています。私は感情に感謝していますが、別の方法があることを願っています。この問題が解決する場合、新しいハードウェアを購入したり、データベース、クライアント(Webサービスサーバーのセット)、およびアプリケーションコード(ADO.NET + ASP.NET)の多くを変更することができます。 私は、ウォームスペア(または3番目のサーバー)を使用してメンテナンスを行い、それを運用環境に "スワップ"するという方針に沿って考えていました。 1現在のトランザクションログを含むバックアップを復元して、スペアを同期します。 2メンテナンスタスクを実行します。3予備サーバーに接続するようにクライアントを再構成します。既存の接続は1分程度で終了します。4予備サーバーが本番サーバーになりました。 残っている問題は、新しい実稼働サーバーがメンテナンスの実行にかかった時間が古くなっていることです。ステップ2と3の間で、元の実稼働サーバーを変更のキューに入れ、それらをスペアにマージする方法はありますか?他のアイデアはありますか?

2
SQL Serverとディスク容量
開発に使用するローカルSQLサーバーにデータベースを作成しました。ログファイルとデータファイルを2番目のハードドライブに作成しました(E:\MSSQL\DATA)。このデータベースを使用して速度テストを行っているため、大量のデータ(700万行)を作成しました。私はいくつかのかなり集中的なクエリを実行し始め、いくつかのテストデータを取得するために、700万行すべてを更新する更新ステートメントを実行しましたC:\が、データファイルを置くので理解できませんE:\。 C:\この他のデータベースでクエリを実行したことに基づいて成長するファイルがありますか?私はこのデータベースでやっていますがC:\、順番を取り戻す必要があります。 データベースファイルグループはPRIMARYでしたが、これは関連性がありますか?

1
SQLサーバーへのログイン中のパスワードの不一致
さて、私は古典的なaspアプリケーションを持っています、そしてdbに接続しようとする接続文字列があります。 MY接続文字列は次のようになります。 Provider=SQLOLEDB;Data Source=MYPC\MSSQLSERVER;Initial Catalog=mydb;database=mydb;User Id=me;Password=123 これで、front-enからdbにアクセスすると、次のエラーが表示されます。 Microsoft OLE DB Provider for SQL Server error '80040e4d' Login failed for user 'me'. 私はSQLプロファイラを見て、これを手に入れました: Login failed for user 'me'. Reason: Password did not match that for the login provided. [CLIENT: <named pipe>] Error: 18456, State:8. 私が試したこと: パスワードが実際に正しいことを100回確認しました。 これを試してみました:check_policyをオフにしてログインしてください(私がこれを行った理由さえわかりません) SSMSでこのアカウントのすべての可能なアクセス許可を有効にします。 この接続文字列を試してみました:Provider = SQLOLEDB; …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.